In [23]:
from os import walk
from os.path import isfile, join, basename
import pathlib
import matplotlib.pyplot as plt

import cv2
import glob

import numpy as np

from tqdm import tqdm

from moviepy.editor import VideoFileClip
In [58]:
def pipeline(img=None):
    """Find lane lines in an input image

    Each stage of the pipeline transforms until we paint lines where the lane
    lines are.
    """
    # cut out polygon of image

    # flatten and scale image

    # sobel operator threshold

    # mag_thresh threshold

    # dir_threshold threshold

    # combine previous 3 thresholds

    # find histograms

    # sliding window search

    # Measure curvature with f(y)=Ay^2 + By + C

    # paint lines on image
    pass
In [59]:
def camera_calibration(root_dir='camera_cal',
                       calibrated_dir='calibrated_dir', nx=9, ny=6):
    # read each pathname in camera_cal folder
    images = glob.glob('camera_cal/calibration*.jpg')

    pathlib.Path(calibrated_dir).mkdir(parents=True, exist_ok=True)
    # mkdir for outputting to calibration_complete_dir

    objpoints = []
    imgpoints = []
    objp = np.zeros((nx*ny,3), np.float32)
    objp[:,:2] = np.mgrid[0:nx,0:ny].T.reshape(-1,2)


    for img_file_name in tqdm(images, desc="finding corners"):

        img = cv2.imread(img_file_name)

        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        ret, corners = cv2.findChessboardCorners(gray, (nx, ny), None)
        if ret == True:
            imgpoints.append(corners)
            objpoints.append(objp)

    mtx, dist = None,None
    
    for img_file_name in tqdm(images, desc="calibrating cameras"):
        img = cv2.imread(img_file_name)
        img_size = (img.shape[1], img.shape[0])

        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints,
                                                           imgpoints,
                                                           gray.shape[::-1],
                                                           None, None)
        img = cv2.undistort(img, mtx, dist)
        img_path_out = join(calibrated_dir, basename(img_file_name))
        cv2.imwrite(img_path_out,img)
        
    return mtx, dist
        
mtx, dist = camera_calibration()
finding corners: 100%|██████████| 20/20 [00:07<00:00,  2.83it/s]
calibrating cameras: 100%|██████████| 20/20 [00:14<00:00,  1.34it/s]
In [60]:
calibrated_img = cv2.imread('calibrated_dir/calibration1.jpg')
calibrated_img = cv2.cvtColor(calibrated_img, cv2.COLOR_BGR2RGB)

distorted_img = cv2.imread('camera_cal/calibration1.jpg')
distorted_img = cv2.cvtColor(distorted_img, cv2.COLOR_BGR2RGB)

fig, (plt_original, plt_distorted) = plt.subplots(1, 2, figsize=(20,10))
plt_original.imshow(distorted_img)
plt_original.set_title('Original Image', fontsize=20)
plt_distorted.imshow(calibrated_img)
plt_distorted.set_title('Undistorted Image', fontsize=20)
Out[60]:
<matplotlib.text.Text at 0x11de1e048>
In [61]:
images = glob.glob('./test_images/*.jpg')

def undistort_test_image(image, mtx, dist):
    return cv2.undistort(image, mtx, dist, None, mtx)

fig, axs = plt.subplots(len(images),2, figsize=(10, 20))
fig.subplots_adjust(hspace = .2, wspace=.001)
axs = axs.ravel()

i = 0
for image in tqdm(images):
    img = cv2.imread(image, cv2.IMREAD_UNCHANGED)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img_undistorted = undistort_test_image(img, mtx, dist)
    
    axs[i].imshow(img_undistorted)
    axs[i].imshow(img)
    axs[i].axis('off')
    i += 1
    axs[i].imshow(img_undistorted, cmap='gray')
    axs[i].axis('off')
    i += 1
100%|██████████| 8/8 [00:01<00:00,  6.55it/s]
In [203]:
calibrated_img = cv2.imread('test_images/test3.jpg', cv2.IMREAD_UNCHANGED)
calibrated_img = cv2.cvtColor(calibrated_img, cv2.COLOR_BGR2RGB)

h,w = calibrated_img.shape[:2]

src = np.float32([[545, 460],
                [735, 460],
                [1280, 700],
                [0, 700]])
    
dst = np.float32([[0, 0],
                 [1280, 0],
                 [1280, 720],
                 [0, 720]])

def corners_unwarp(img, src, dst):
    M = cv2.getPerspectiveTransform(src, dst)
    Minv = cv2.getPerspectiveTransform(dst, src)
    warped = cv2.warpPerspective(img, M, (w,h), flags=cv2.INTER_LINEAR)
    return M, warped, Minv

M, distorted_img, Minv = corners_unwarp(calibrated_img, src, dst)
In [204]:
fig, (plt_original, plt_distorted, drawn_image) = plt.subplots(1, 3, figsize=(20,10))

drawn_image.imshow(calibrated_img)


plt_original.imshow(distorted_img)
plt_original.set_title('Distorted Image', fontsize=20)
plt_distorted.imshow(calibrated_img)
plt_distorted.set_title('Original Image', fontsize=20)

x = [src[0][0],src[3][0],src[2][0],src[1][0],src[0][0]]
y = [src[0][1],src[2][1],src[3][1],src[1][1],src[0][1]]
drawn_image.set_title('Selected Slice', fontsize=20)
drawn_image.plot(x, y, color='#ff0000', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
Out[204]:
[<matplotlib.lines.Line2D at 0x1730d26a0>]
In [149]:
def abs_sobel_thresh(img, orient='x', sobel_kernel=(3,3), thresh_min=0, thresh_max=255):
    
    # Apply the following steps to img
    # 1) Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 2) Take the derivative in x or y given orient = 'x' or 'y'
    if orient == 'x':
        sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0)
    elif orient == 'y':
        sobelx = cv2.Sobel(gray, cv2.CV_64F, 0, 1)
    else:
        sobelx = None
    
    # 3) Take the absolute value of the derivative or gradient
    abs_sobelx = np.absolute(sobelx)
    
    # 4) Scale to 8-bit (0 - 255) then convert to type = np.uint8
    scaled_sobel = np.uint8(255*abs_sobelx/np.max(abs_sobelx))
    
    # 5) Create a mask of 1's where the scaled gradient magnitude 
            # is > thresh_min and < thresh_max
    sxbinary = np.zeros_like(scaled_sobel)
    sxbinary[(scaled_sobel >= thresh_min) & (scaled_sobel <= thresh_max)] = 1
    # plt.imshow(sxbinary, cmap='gray')
    
    # 6) Return this mask as your binary_output image
    binary_output = np.copy(sxbinary) # Remove this line
    return binary_output



grad_binary = abs_sobel_thresh(distorted_img, orient='x', thresh_min=20, thresh_max=100)
# Plot the result
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()
ax1.imshow(distorted_img)
ax1.set_title('Original Image', fontsize=50)
ax2.imshow(grad_binary, cmap='gray')
ax2.set_title('Thresholded Gradient', fontsize=50)
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [150]:
def mag_thresh(image, sobel_kernel=3, mag_thresh=(0, 255)):
    
    # Apply the following steps to img
    # 1) Convert to grayscale
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 2) Take the gradient in x and y separately
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)

    # 3) Calculate the magnitude 
    sobelxy = np.sqrt(sobelx**2 + sobely**2)
    
    abs_sobelx = np.absolute(sobelxy)

    # 4) Scale to 8-bit (0 - 255) and convert to type = np.uint8
    scaled_sobel = np.uint8(255*abs_sobelx/np.max(abs_sobelx))

    # 5) Create a binary mask where mag thresholds are met
    thresh_min = mag_thresh[0]
    thresh_max = mag_thresh[1]
    sxbinary = np.zeros_like(scaled_sobel)
    sxbinary[(scaled_sobel >= thresh_min) & (scaled_sobel <= thresh_max)] = 1

    # 6) Return this mask as your binary_output image
    binary_output = np.copy(sxbinary) # Remove this line
    return binary_output

# Run the function
mag_binary = mag_thresh(distorted_img, sobel_kernel=3, mag_thresh=(30, 100))
# Plot the result
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()
ax1.imshow(distorted_img)
ax1.set_title('Original Image', fontsize=50)
ax2.imshow(mag_binary, cmap='gray')
ax2.set_title('Thresholded Magnitude', fontsize=50)
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [151]:
def dir_threshold(img, sobel_kernel=3, thresh=(0, np.pi/2)):
    
    # Apply the following steps to img
    # 1) Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 2) Take the gradient in x and y separately
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    
    # 3) Take the absolute value of the x and y gradients
    absgraddir = np.arctan2(np.absolute(sobely), np.absolute(sobelx))
    
    # 4) Use np.arctan2(abs_sobely, abs_sobelx) to calculate the direction of the gradient 
    absgraddir = np.arctan2(np.absolute(sobely), np.absolute(sobelx))

    # 5) Create a binary mask where direction thresholds are met
    binary_output =  np.zeros_like(absgraddir)
    binary_output[(absgraddir >= thresh[0]) & (absgraddir <= thresh[1])] = 1

    # 6) Return this mask as your binary_output image
    return binary_output

# Run the function
dir_binary = dir_threshold(distorted_img, sobel_kernel=15, thresh=(0.7, 1.3))
# Plot the result
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()
ax1.imshow(distorted_img)
ax1.set_title('Original Image', fontsize=50)
ax2.imshow(dir_binary, cmap='gray')
ax2.set_title('Thresholded Grad. Dir.', fontsize=50)
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [152]:
def hls_channel(image, thresh=(150,255), channel='S'):
    hls = cv2.cvtColor(image, cv2.COLOR_RGB2HLS)
    H = hls[:,:,0]
    L = hls[:,:,1]
    S = hls[:,:,2]
    binary = np.zeros_like(S)
    if channel == 'S':
        binary[(S > thresh[0]) & (S <= thresh[1])] = 1
    elif channel == 'H':
        binary[(H > thresh[0]) & (H <= thresh[1])] = 1
    elif channel == 'L':
        binary[(L > thresh[0]) & (L <= thresh[1])] = 1
        
    return binary

hchannel_img = hls_channel(distorted_img, channel='H')
schannel_img = hls_channel(distorted_img, channel='S')
lchannel_img = hls_channel(distorted_img, channel='L')

# Plot the result
f, ax = plt.subplots(2, 2, figsize=(24, 9))
f.tight_layout()
ax = ax.ravel()

ax[0].imshow(distorted_img)
ax[0].set_title('Original Image', fontsize=25)

ax[1].imshow(hchannel_img, cmap='gray')
ax[1].set_title('Hue Channel', fontsize=25)

ax[2].imshow(schannel_img, cmap='gray')
ax[2].set_title('Saturation Channel', fontsize=25)

ax[3].imshow(lchannel_img, cmap='gray')
ax[3].set_title('Lightness Channel', fontsize=25)

plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [153]:
ksize = 3 # Choose a larger odd number to smooth gradient measurements

# Apply each of the thresholding functions
gradx = abs_sobel_thresh(distorted_img, orient='x',thresh_min=20, thresh_max=100)
grady = abs_sobel_thresh(distorted_img, orient='y', thresh_min=20, thresh_max=100)
mag_binary = mag_thresh(distorted_img, sobel_kernel=3, mag_thresh=(30, 100))
# dir_binary = dir_threshold(distorted_img, sobel_kernel=ksize, thresh=(0, np.pi/2))
dir_binary = dir_threshold(distorted_img, sobel_kernel=15, thresh=(0.7, 1.3))



f, ax = plt.subplots(2, 3, figsize=(24, 9))
f.tight_layout()
ax = ax.ravel()

ax[0].imshow(gradx)
ax[0].set_title('Grad X', fontsize=25)

ax[1].imshow(grady, cmap='gray')
ax[1].set_title('Grad Y', fontsize=25)

ax[2].imshow(mag_binary, cmap='gray')
ax[2].set_title('Magnitude', fontsize=25)

ax[3].imshow(dir_binary, cmap='gray')
ax[3].set_title('Directional', fontsize=25)

ax[4].imshow(distorted_img, cmap='gray')
ax[4].set_title("Original distorted Image", fontsize=25)

ax[5].imshow(hchannel_img, cmap='gray')
ax[5].set_title("Original distorted Image", fontsize=25)

plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [154]:
combined = np.zeros_like(dir_binary)
# combined[((gradx == 1) & (grady == 1)) | ((mag_binary == 1) & (dir_binary == 1))] = 1
combined[((gradx == 1) & (mag_binary == 1)) ] = 1

f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()
ax1.imshow(distorted_img)
ax1.set_title('Original Image', fontsize=50)
ax2.imshow(combined, cmap='gray')
ax2.set_title('Grad X & Magnitutde, Combined', fontsize=50) # Pop, Pop!
plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [156]:
thresh = (180, 255)


gray = cv2.cvtColor(distorted_img, cv2.COLOR_RGB2GRAY)
binary_gray = np.zeros_like(gray)
binary_gray[(gray > thresh[0]) & (gray <= thresh[1])] = 1

combined_gray = np.zeros_like(binary_gray)
combined_gray[((binary_gray == 1) | (combined == 1)) ] = 1

hchannel_combined_img = np.zeros_like(combined_gray)
hchannel_combined_img[((combined_gray == 1) | (lchannel_img == 1))] = 1


f, (ax1, ax2, ax3 ) = plt.subplots(1, 3, figsize=(24, 9))
f.tight_layout()
ax1.imshow(combined_gray)
ax1.set_title(' Gray Threshold Channel', fontsize=50)

ax2.imshow(hchannel_combined_img)
ax2.set_title(' Gray Threshold Hue Channel', fontsize=50)

ax3.imshow(distorted_img)
ax3.set_title('Original', fontsize=50)

plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)
In [157]:
# recommended to me by the previous reviewer

def select_yellow(image):
    imag = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
    lower = np.array([20,60,60]) #248	186	95	
    upper = np.array([50,190, 250])
    mask = cv2.inRange(hsv, lower, upper)
    #EFBF74

    return mask

def select_white(image):
    lower = np.array([202,202,202])
    upper = np.array([255,255,255])
    mask = cv2.inRange(image, lower, upper)

    return mask

def comb_thresh(image):
    yellow = select_yellow(image)
    white = select_white(image)

    combined_binary = np.zeros_like(yellow)
    combined_binary[(yellow >= 1) | (white >= 1)] = 1

    return combined_binary

yellow_white_img = comb_thresh(distorted_img)
f, (ax1, ax2 ) = plt.subplots(1, 2, figsize=(24, 9))
f.tight_layout()
ax1.imshow(distorted_img)
ax1.set_title('Original', fontsize=50)

ax2.imshow(yellow_white_img)
ax2.set_title('Yellow & White ', fontsize=50)

plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)

Combining Gradient-X, Magnitude Binary and Threshold Gradient's product and the binary grey channel gives us a very easy to find lane lines. It shows up quite well in the histogram.

In [167]:
def find_histogram(img, plot_graph=False):
    histogram = np.sum(img[img.shape[0]//2:,:], axis=0)

    for i, col in enumerate(histogram):
        if i < 250 or i > 1150:
            col = col / 10
        histogram[i] = col

    if plot_graph:
        plt.plot(histogram)
        
    return histogram
    
# lane_line_histogram = find_histogram(combined_gray, plot_graph=True)
lane_line_histogram = find_histogram(yellow_white_img, plot_graph=True)
In [215]:
def sliding_windows(binary_warped, histogram, plot_output=False, nwindows = 20):
    out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255
    # Find the peak of the left and right halves of the histogram
    # These will be the starting point for the left and right lines
    midpoint = np.int(histogram.shape[0]//2)
    leftx_base = np.argmax(histogram[:midpoint])
    rightx_base = np.argmax(histogram[midpoint:]) + midpoint
    # Choose the number of sliding windows
    
    # Set height of windows
    window_height = np.int(binary_warped.shape[0]//nwindows)
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    # Current positions to be updated for each window
    leftx_current = leftx_base
    rightx_current = rightx_base
    # Set the width of the windows +/- margin
    margin = 100
    # Set minimum number of pixels found to recenter window
    minpix = 50
    # Create empty lists to receive left and right lane pixel indices
    left_lane_inds = []
    right_lane_inds = []
    
    for window in range(nwindows):
        # Identify window boundaries in x and y (and right and left)
        win_y_low = binary_warped.shape[0] - (window+1)*window_height
        win_y_high = binary_warped.shape[0] - window*window_height
        win_xleft_low = leftx_current - margin
        win_xleft_high = leftx_current + margin
        win_xright_low = rightx_current - margin
        win_xright_high = rightx_current + margin
        # Draw the windows on the visualization image
        cv2.rectangle(out_img,(win_xleft_low,win_y_low),(win_xleft_high,win_y_high),
        (0,255,0), 2) 
        cv2.rectangle(out_img,(win_xright_low,win_y_low),(win_xright_high,win_y_high),
        (0,255,0), 2) 
        # Identify the nonzero pixels in x and y within the window
        good_left_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xleft_low) &  (nonzerox < win_xleft_high)).nonzero()[0]
        good_right_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xright_low) &  (nonzerox < win_xright_high)).nonzero()[0]
        # Append these indices to the lists
        left_lane_inds.append(good_left_inds)
        right_lane_inds.append(good_right_inds)
        # If you found > minpix pixels, recenter next window on their mean position
        if len(good_left_inds) > minpix:
            leftx_current = np.int(np.mean(nonzerox[good_left_inds]))
        if len(good_right_inds) > minpix:        
            rightx_current = np.int(np.mean(nonzerox[good_right_inds]))

    # Concatenate the arrays of indices
    left_lane_inds = np.concatenate(left_lane_inds)
    right_lane_inds = np.concatenate(right_lane_inds)

    # Extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds] 

    if len(leftx) != 0 and len(rightx) != 0:
        # Fit a second order polynomial to each
        left_fit = np.polyfit(lefty, leftx, 2)
        right_fit = np.polyfit(righty, rightx, 2)
    else:
        left_fit = (0,0,0)
        right_fit = (0,0,0)
        
    if plot_output is True:
        # Generate x and y values for plotting
        ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
        left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
        right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]

        out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
        out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [0, 0, 255]
        plt.imshow(out_img)
        plt.plot(left_fitx, ploty, color='yellow')
        plt.plot(right_fitx, ploty, color='yellow')
        plt.xlim(0, 1280)
        plt.ylim(720, 0)
    
    return binary_warped, left_fit, right_fit
    
def find_next_path(binary_warped, left_fit, right_fit):
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    margin = 100
    left_lane_inds = ((nonzerox > (left_fit[0]*(nonzeroy**2) + left_fit[1]*nonzeroy + 
    left_fit[2] - margin)) & (nonzerox < (left_fit[0]*(nonzeroy**2) + 
    left_fit[1]*nonzeroy + left_fit[2] + margin))) 

    right_lane_inds = ((nonzerox > (right_fit[0]*(nonzeroy**2) + right_fit[1]*nonzeroy + 
    right_fit[2] - margin)) & (nonzerox < (right_fit[0]*(nonzeroy**2) + 
    right_fit[1]*nonzeroy + right_fit[2] + margin)))  

    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]
    # Fit a second order polynomial to each
    left_fit = np.polyfit(lefty, leftx, 2)
    right_fit = np.polyfit(righty, rightx, 2)
    # Generate x and y values for plotting
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
    
    out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255
    window_img = np.zeros_like(out_img)
    # Color in left and right line pixels
    out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
    out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [0, 0, 255]

    # Generate a polygon to illustrate the search window area
    # And recast the x and y points into usable format for cv2.fillPoly()
    left_line_window1 = np.array([np.transpose(np.vstack([left_fitx-margin, ploty]))])
    left_line_window2 = np.array([np.flipud(np.transpose(np.vstack([left_fitx+margin, 
                                  ploty])))])
    left_line_pts = np.hstack((left_line_window1, left_line_window2))
    right_line_window1 = np.array([np.transpose(np.vstack([right_fitx-margin, ploty]))])
    right_line_window2 = np.array([np.flipud(np.transpose(np.vstack([right_fitx+margin, 
                                  ploty])))])
    right_line_pts = np.hstack((right_line_window1, right_line_window2))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(window_img, np.int_([left_line_pts]), (0,255, 0))
    cv2.fillPoly(window_img, np.int_([right_line_pts]), (0,255, 0))
    result = cv2.addWeighted(out_img, 1, window_img, 0.3, 0)
    plt.imshow(result)
    plt.plot(left_fitx, ploty, color='yellow')
    plt.plot(right_fitx, ploty, color='yellow')
    plt.xlim(0, 1280)
    plt.ylim(720, 0)
    return result, left_fit, right_fit
    
binary_warped, left_fit, right_fit = sliding_windows(combined_gray,lane_line_histogram, plot_output=True)
In [216]:
r, left_fit, right_fit = find_next_path(binary_warped, left_fit, right_fit)
In [217]:
warped = combined_gray
# window settings
window_width = 50 
window_height = 160 # Break image into 9 vertical layers since image height is 720
margin = 75 # How much to slide left and right for searching

def window_mask(width, height, img_ref, center,level):
    output = np.zeros_like(img_ref)
    output[int(img_ref.shape[0]-(level+1)*height):int(img_ref.shape[0]-level*height),max(0,int(center-width/2)):min(int(center+width/2),img_ref.shape[1])] = 1
    return output

def find_window_centroids(image, window_width, window_height, margin):
    
    window_centroids = [] # Store the (left,right) window centroid positions per level
    window = np.ones(window_width) # Create our window template that we will use for convolutions
    
    # First find the two starting positions for the left and right lane by using np.sum to get the vertical image slice
    # and then np.convolve the vertical image slice with the window template 
    
    # Sum quarter bottom of image to get slice, could use a different ratio
    l_sum = np.sum(image[int(3*image.shape[0]/4):,:int(image.shape[1]/2)], axis=0)
    l_center = np.argmax(np.convolve(window,l_sum))-window_width/2
    r_sum = np.sum(image[int(3*image.shape[0]/4):,int(image.shape[1]/2):], axis=0)
    r_center = np.argmax(np.convolve(window,r_sum))-window_width/2+int(image.shape[1]/2)
    
    # Add what we found for the first layer
    window_centroids.append((l_center,r_center))
    
    # Go through each layer looking for max pixel locations
    for level in range(1,(int)(image.shape[0]/window_height)):
	    # convolve the window into the vertical slice of the image
	    image_layer = np.sum(image[int(image.shape[0]-(level+1)*window_height):int(image.shape[0]-level*window_height),:], axis=0)
	    conv_signal = np.convolve(window, image_layer)
	    # Find the best left centroid by using past left center as a reference
	    # Use window_width/2 as offset because convolution signal reference is at right side of window, not center of window
	    offset = window_width/2
	    l_min_index = int(max(l_center+offset-margin,0))
	    l_max_index = int(min(l_center+offset+margin,image.shape[1]))
	    l_center = np.argmax(conv_signal[l_min_index:l_max_index])+l_min_index-offset
	    # Find the best right centroid by using past right center as a reference
	    r_min_index = int(max(r_center+offset-margin,0))
	    r_max_index = int(min(r_center+offset+margin,image.shape[1]))
	    r_center = np.argmax(conv_signal[r_min_index:r_max_index])+r_min_index-offset
	    # Add what we found for that layer
	    window_centroids.append((l_center,r_center))

    return window_centroids

window_centroids = find_window_centroids(binary_warped, window_width, window_height, margin)

# If we found any window centers
if len(window_centroids) > 0:

    # Points used to draw all the left and right windows
    l_points = np.zeros_like(warped)
    r_points = np.zeros_like(warped)

    # Go through each level and draw the windows 	
    for level in range(0,len(window_centroids)):
        # Window_mask is a function to draw window areas
        l_mask = window_mask(window_width,window_height,warped,window_centroids[level][0],level)
        r_mask = window_mask(window_width,window_height,warped,window_centroids[level][1],level)
        # Add graphic points from window mask here to total pixels found 
        l_points[(l_points == 255) | ((l_mask == 1) ) ] = 255
        r_points[(r_points == 255) | ((r_mask == 1) ) ] = 255

    # Draw the results
    template = np.array(r_points+l_points,np.uint8) # add both left and right window pixels together
    zero_channel = np.zeros_like(template) # create a zero color channel
    template = np.array(cv2.merge((zero_channel,template,zero_channel)),np.uint8) # make window pixels green
    warpage= np.dstack((warped, warped, warped))*255 # making the original road pixels 3 color channels
    output = cv2.addWeighted(warpage, 1, template, 0.5, 0.0) # overlay the orignal road image with window results
 
# If no window centers found, just display orginal road image
else:
    output = np.array(cv2.merge((warped,warped,warped)),np.uint8)

# Display the final results
plt.imshow(output)
plt.title('window fitting results')
plt.show()
In [218]:
def find_curvature(image, left_fit, right_fit):
    # Define conversions in x and y from pixels space to meters
    ym_per_pix = 30/720 # meters per pixel in y dimension
    xm_per_pix = 3.7/700 # meters per pixel in x dimension
    quadratic_coeff = 3e-4 # arbitrary quadratic coefficient

    ploty = np.linspace(0, 719, num=720)# to cover same y-range as image
    # For each y position generate random x position within +/-50 pix
    # of the line base position in each case (x=200 for left, and x=900 for right)
    leftx = np.array([200 + (y**2)*quadratic_coeff + np.random.randint(-50, high=51) 
                                  for y in ploty])
    rightx = np.array([900 + (y**2)*quadratic_coeff + np.random.randint(-50, high=51) 
                                    for y in ploty])

    leftx = leftx[::-1]  # Reverse to match top-to-bottom in y
    rightx = rightx[::-1]  # Reverse to match top-to-bottom in y


    # Fit new polynomials to x,y in world space
    y_eval = np.max(ploty)
    left_fit_cr = np.polyfit(ploty*ym_per_pix, leftx*xm_per_pix, 2)
    right_fit_cr = np.polyfit(ploty*ym_per_pix, rightx*xm_per_pix, 2)
    
    # Calculate the new radii of curvature
    left_curverad = ((1 + (2*left_fit_cr[0]*y_eval*ym_per_pix + left_fit_cr[1])**2)**1.5) / np.absolute(2*left_fit_cr[0])
    right_curverad = ((1 + (2*right_fit_cr[0]*y_eval*ym_per_pix + right_fit_cr[1])**2)**1.5) / np.absolute(2*right_fit_cr[0])
    # Now our radius of curvature is in meters
    
    return left_curverad, right_curverad, left_fit_cr, right_fit_cr
    # Example values: 632.1 m    626.2 m

left_curverad, right_curverad, left_fit_cr, right_fit_cr = find_curvature(binary_warped, left_fit, right_fit)
print(left_curverad, 'm', right_curverad, 'm')
571.8864088363198 m 531.9300092857579 m
In [219]:
def draw_lane_lines(l_fit, r_fit, Minv, original_img, binary_img):
    new_img = np.copy(original_img)
    if l_fit is None or r_fit is None:
        return original_img
    # Create an image to draw the lines on
    warp_zero = np.zeros_like(binary_img).astype(np.uint8)
    color_warp = np.dstack((warp_zero, warp_zero, warp_zero))
    
    h,w = binary_img.shape
    ploty = np.linspace(0, h-1, num=h)# to cover same y-range as image
    left_fitx = l_fit[0]*ploty**2 + l_fit[1]*ploty + l_fit[2]
    right_fitx = r_fit[0]*ploty**2 + r_fit[1]*ploty + r_fit[2]

    # Recast the x and y points into usable format for cv2.fillPoly()
    pts_left = np.array([np.transpose(np.vstack([left_fitx, ploty]))])
    pts_right = np.array([np.flipud(np.transpose(np.vstack([right_fitx, ploty])))])
    pts = np.hstack((pts_left, pts_right))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(color_warp, np.int_([pts]), (0,255, 0))

    # Warp the blank back to original image space using inverse perspective matrix (Minv)
    newwarp = cv2.warpPerspective(color_warp, Minv, (w, h)) 
    # Combine the result with the original image
    result = cv2.addWeighted(new_img, 1, newwarp, 0.5, 0)
    return result

result = draw_lane_lines(left_fit, right_fit, Minv, calibrated_img, binary_warped)
plt.imshow(result)
Out[219]:
<matplotlib.image.AxesImage at 0x126764a58>
In [196]:
def annotate_data(img, left_curverad, right_curverad):
    
    text = 'Left Curve radius: ' + '{:04.2f}'.format(left_curverad) + 'm'
    cv2.putText(img, text, (40,70), cv2.FONT_HERSHEY_DUPLEX, 1.5, (200,255,155), 2, cv2.LINE_AA)

    text = 'Right Curve radius: ' + '{:04.2f}'.format(right_curverad) + 'm'
    cv2.putText(img, text, (40,120), cv2.FONT_HERSHEY_DUPLEX, 1.5, (200,255,155), 2, cv2.LINE_AA)
    return img

result = annotate_data(img, left_curverad, right_curverad)
plt.imshow(result)
Out[196]:
<matplotlib.image.AxesImage at 0x12e1f14a8>
In [197]:
# recommended to me by the previous reviewer

def select_yellow(image):
    hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
    lower = np.array([20,60,60])
    upper = np.array([38,174, 250])
    mask = cv2.inRange(hsv, lower, upper)

    return mask

def select_white(image):
    lower = np.array([202,202,202])
    upper = np.array([255,255,255])
    mask = cv2.inRange(image, lower, upper)

    return mask

def comb_thresh(image):
    yellow = select_yellow(image)
    white = select_white(image)

    combined_binary = np.zeros_like(yellow)
    combined_binary[(yellow >= 1) | (white >= 1)] = 1

    return combined_binary
In [220]:
def pipeline(image, nwindows=20):
    return _pipeline(image,nwindows)

def pipeline_challenge(image, nwindows=100):
    return _pipeline(image,nwindows)

def _pipeline(image, nwindows=5):
    """Take an image and find the lane lines

    """
    h,w = image.shape[:2]

    src = np.float32([(550,475),
                       (720,475),
                       (235,685),
                       (1084,685)
                      ])

    src = np.float32([(575,464),
                  (707,464), 
                  (258,682), 
                  (1049,682)])
    
    dst = np.float32([(450,0),
                      (w-450,0),
                      (450,h),
                      (w-450,h)])
    
    M, distorted_img, Minv = corners_unwarp(image, src, dst)
    
    ksize = 5 # Choose a larger odd number to smooth gradient measurements

    # Apply each of the thresholding functions
    gradx = abs_sobel_thresh(distorted_img, orient='x',thresh_min=20, thresh_max=100)
    grady = abs_sobel_thresh(distorted_img, orient='y', thresh_min=20, thresh_max=100)
    mag_binary = mag_thresh(distorted_img, sobel_kernel=3, mag_thresh=(30, 100))
    dir_binary = dir_threshold(distorted_img, sobel_kernel=15, thresh=(0.7, 1.3))

    combined = np.zeros_like(mag_binary)
    
    lchannel_img = hls_channel(distorted_img, channel='L')
    
    white_and_yellow_channel = comb_thresh(distorted_img)

# #     combined[((gradx == 1) & (mag_binary == 1)) ] = 1
#     combined[((white_and_yellow_channel == 1) & (lchannel_img == 1)) ] = 1

#     thresh = (180, 255)

#     gray = cv2.cvtColor(distorted_img, cv2.COLOR_RGB2GRAY)
#     binary_gray = np.zeros_like(gray)
#     binary_gray[(gray > thresh[0]) & (gray <= thresh[1])] = 1

#     combined_gray = np.zeros_like(binary_gray)
#     combined_gray[((binary_gray == 1) | (combined == 1)) ] = 1

    combined_gray = white_and_yellow_channel

    lane_line_histogram = find_histogram(combined_gray, plot_graph=False)

    binary_warped, left_fit, right_fit = sliding_windows(combined_gray,lane_line_histogram, nwindows=5)
    
#     r, left_fit, right_fit = find_next_path(binary_warped, left_fit, right_fit)
    
    left_curverad, right_curverad, left_fit_cr, right_fit_cr = find_curvature(binary_warped, left_fit, right_fit)

    result_lane_lines = draw_lane_lines(left_fit, right_fit, Minv, image, binary_warped)
    
    result = annotate_data(result_lane_lines, left_curverad, right_curverad)

    return result
In [212]:
images = glob.glob('./test_images/*.jpg')

fig, axs = plt.subplots(len(images),2, figsize=(10, 20))
# fig.subplots_adjust(hspace = .2, wspace=.001)
axs = axs.ravel()

i = 0
for image in tqdm(images):
    img = cv2.imread(image, cv2.IMREAD_UNCHANGED)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#     img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img_painted = pipeline(img)
    axs[i].imshow(img)
    axs[i].axis('off')
    i += 1
    axs[i].imshow(img_painted)
    axs[i].axis('off')
    i += 1
  0%|          | 0/8 [00:00<?, ?it/s]
 12%|█▎        | 1/8 [00:00<00:02,  3.09it/s]
 25%|██▌       | 2/8 [00:00<00:01,  3.11it/s]
 38%|███▊      | 3/8 [00:00<00:01,  3.08it/s]
 50%|█████     | 4/8 [00:01<00:01,  3.09it/s]
 62%|██████▎   | 5/8 [00:01<00:00,  3.09it/s]
 75%|███████▌  | 6/8 [00:01<00:00,  3.07it/s]
 88%|████████▊ | 7/8 [00:02<00:00,  3.05it/s]
100%|██████████| 8/8 [00:02<00:00,  3.06it/s]
In [202]:
video_output1 = 'project_video_output.mp4'
video_input1 = VideoFileClip('project_video.mp4')
processed_video = video_input1.fl_image(pipeline)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video project_video_output.mp4
[MoviePy] Writing video project_video_output.mp4
100%|█████████▉| 1260/1261 [05:40<00:00,  3.70it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output.mp4 

CPU times: user 6min 8s, sys: 1min 17s, total: 7min 26s
Wall time: 5min 41s
In [221]:
video_output1 = 'challenge_video_output.mp4'
video_input1 = VideoFileClip('challenge_video.mp4')
processed_video = video_input1.fl_image(pipeline_challenge)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video challenge_video_output.mp4
[MoviePy] Writing video challenge_video_output.mp4
  0%|          | 0/485 [00:00<?, ?it/s]
  0%|          | 1/485 [00:00<01:59,  4.05it/s]
  0%|          | 2/485 [00:00<02:01,  3.97it/s]
  1%|          | 3/485 [00:00<02:10,  3.69it/s]
  1%|          | 4/485 [00:01<02:13,  3.62it/s]
  1%|          | 5/485 [00:01<02:13,  3.58it/s]
  1%|          | 6/485 [00:01<02:12,  3.60it/s]
  1%|▏         | 7/485 [00:01<02:10,  3.65it/s]
  2%|▏         | 8/485 [00:02<02:09,  3.69it/s]
  2%|▏         | 9/485 [00:02<02:08,  3.71it/s]
  2%|▏         | 10/485 [00:02<02:06,  3.74it/s]
  2%|▏         | 11/485 [00:02<02:06,  3.76it/s]
  2%|▏         | 12/485 [00:03<02:05,  3.77it/s]
  3%|▎         | 13/485 [00:03<02:04,  3.78it/s]
  3%|▎         | 14/485 [00:03<02:04,  3.79it/s]
  3%|▎         | 15/485 [00:03<02:03,  3.80it/s]
  3%|▎         | 16/485 [00:04<02:02,  3.82it/s]
  4%|▎         | 17/485 [00:04<02:02,  3.82it/s]
  4%|▎         | 18/485 [00:04<02:02,  3.80it/s]
  4%|▍         | 19/485 [00:04<02:02,  3.80it/s]
  4%|▍         | 20/485 [00:05<02:03,  3.77it/s]
  4%|▍         | 21/485 [00:05<02:03,  3.77it/s]
  5%|▍         | 22/485 [00:05<02:02,  3.77it/s]
  5%|▍         | 23/485 [00:06<02:02,  3.77it/s]
  5%|▍         | 24/485 [00:06<02:02,  3.77it/s]
  5%|▌         | 25/485 [00:06<02:01,  3.77it/s]
  5%|▌         | 26/485 [00:06<02:01,  3.78it/s]
  6%|▌         | 27/485 [00:07<02:00,  3.79it/s]
  6%|▌         | 28/485 [00:07<02:00,  3.79it/s]
  6%|▌         | 29/485 [00:07<02:00,  3.79it/s]
  6%|▌         | 30/485 [00:07<01:59,  3.79it/s]
  6%|▋         | 31/485 [00:08<01:59,  3.80it/s]
  7%|▋         | 32/485 [00:08<01:59,  3.80it/s]
  7%|▋         | 33/485 [00:08<01:58,  3.80it/s]
  7%|▋         | 34/485 [00:08<01:58,  3.81it/s]
  7%|▋         | 35/485 [00:09<01:58,  3.81it/s]
  7%|▋         | 36/485 [00:09<01:57,  3.82it/s]
  8%|▊         | 37/485 [00:09<01:57,  3.81it/s]
  8%|▊         | 38/485 [00:09<01:57,  3.82it/s]
  8%|▊         | 39/485 [00:10<01:56,  3.82it/s]
  8%|▊         | 40/485 [00:10<01:56,  3.82it/s]
  8%|▊         | 41/485 [00:10<01:56,  3.82it/s]
  9%|▊         | 42/485 [00:10<01:55,  3.82it/s]
  9%|▉         | 43/485 [00:11<01:55,  3.82it/s]
  9%|▉         | 44/485 [00:11<01:55,  3.82it/s]
  9%|▉         | 45/485 [00:11<01:55,  3.82it/s]
  9%|▉         | 46/485 [00:12<01:54,  3.83it/s]
 10%|▉         | 47/485 [00:12<01:54,  3.83it/s]
 10%|▉         | 48/485 [00:12<01:54,  3.83it/s]
 10%|█         | 49/485 [00:12<01:53,  3.83it/s]
 10%|█         | 50/485 [00:13<01:53,  3.83it/s]
 11%|█         | 51/485 [00:13<01:53,  3.83it/s]
 11%|█         | 52/485 [00:13<01:53,  3.83it/s]
 11%|█         | 53/485 [00:13<01:52,  3.83it/s]
 11%|█         | 54/485 [00:14<01:52,  3.83it/s]
 11%|█▏        | 55/485 [00:14<01:52,  3.83it/s]
 12%|█▏        | 56/485 [00:14<01:52,  3.83it/s]
 12%|█▏        | 57/485 [00:14<01:51,  3.83it/s]
 12%|█▏        | 58/485 [00:15<01:51,  3.83it/s]
 12%|█▏        | 59/485 [00:15<01:51,  3.83it/s]
 12%|█▏        | 60/485 [00:15<01:51,  3.83it/s]
 13%|█▎        | 61/485 [00:15<01:50,  3.83it/s]
 13%|█▎        | 62/485 [00:16<01:50,  3.83it/s]
 13%|█▎        | 63/485 [00:16<01:50,  3.83it/s]
 13%|█▎        | 64/485 [00:16<01:49,  3.83it/s]
 13%|█▎        | 65/485 [00:16<01:49,  3.83it/s]
 14%|█▎        | 66/485 [00:17<01:49,  3.83it/s]
 14%|█▍        | 67/485 [00:17<01:49,  3.81it/s]
 14%|█▍        | 68/485 [00:17<01:49,  3.81it/s]
 14%|█▍        | 69/485 [00:18<01:49,  3.81it/s]
 14%|█▍        | 70/485 [00:18<01:48,  3.81it/s]
 15%|█▍        | 71/485 [00:18<01:48,  3.81it/s]
 15%|█▍        | 72/485 [00:18<01:48,  3.81it/s]
 15%|█▌        | 73/485 [00:19<01:48,  3.81it/s]
 15%|█▌        | 74/485 [00:19<01:47,  3.81it/s]
 15%|█▌        | 75/485 [00:19<01:47,  3.81it/s]
 16%|█▌        | 76/485 [00:19<01:47,  3.81it/s]
 16%|█▌        | 77/485 [00:20<01:46,  3.81it/s]
 16%|█▌        | 78/485 [00:20<01:46,  3.82it/s]
 16%|█▋        | 79/485 [00:20<01:46,  3.82it/s]
 16%|█▋        | 80/485 [00:20<01:46,  3.82it/s]
 17%|█▋        | 81/485 [00:21<01:45,  3.82it/s]
 17%|█▋        | 82/485 [00:21<01:45,  3.82it/s]
 17%|█▋        | 83/485 [00:21<01:45,  3.82it/s]
 17%|█▋        | 84/485 [00:21<01:44,  3.83it/s]
 18%|█▊        | 85/485 [00:22<01:44,  3.83it/s]
 18%|█▊        | 86/485 [00:22<01:44,  3.83it/s]
 18%|█▊        | 87/485 [00:22<01:43,  3.83it/s]
 18%|█▊        | 88/485 [00:22<01:43,  3.83it/s]
 18%|█▊        | 89/485 [00:23<01:43,  3.83it/s]
 19%|█▊        | 90/485 [00:23<01:43,  3.83it/s]
 19%|█▉        | 91/485 [00:23<01:42,  3.83it/s]
 19%|█▉        | 92/485 [00:24<01:42,  3.83it/s]
 19%|█▉        | 93/485 [00:24<01:42,  3.83it/s]
 19%|█▉        | 94/485 [00:24<01:42,  3.83it/s]
 20%|█▉        | 95/485 [00:24<01:41,  3.83it/s]
 20%|█▉        | 96/485 [00:25<01:41,  3.83it/s]
 20%|██        | 97/485 [00:25<01:41,  3.83it/s]
 20%|██        | 98/485 [00:25<01:41,  3.83it/s]
 20%|██        | 99/485 [00:25<01:40,  3.83it/s]
 21%|██        | 100/485 [00:26<01:40,  3.83it/s]
 21%|██        | 101/485 [00:26<01:40,  3.83it/s]
 21%|██        | 102/485 [00:26<01:39,  3.83it/s]
 21%|██        | 103/485 [00:26<01:39,  3.83it/s]
 21%|██▏       | 104/485 [00:27<01:39,  3.83it/s]
 22%|██▏       | 105/485 [00:27<01:39,  3.83it/s]
 22%|██▏       | 106/485 [00:27<01:38,  3.83it/s]
 22%|██▏       | 107/485 [00:27<01:38,  3.83it/s]
 22%|██▏       | 108/485 [00:28<01:38,  3.83it/s]
 22%|██▏       | 109/485 [00:28<01:38,  3.83it/s]
 23%|██▎       | 110/485 [00:28<01:37,  3.83it/s]
 23%|██▎       | 111/485 [00:28<01:37,  3.84it/s]
 23%|██▎       | 112/485 [00:29<01:37,  3.84it/s]
 23%|██▎       | 113/485 [00:29<01:36,  3.84it/s]
 24%|██▎       | 114/485 [00:29<01:36,  3.84it/s]
 24%|██▎       | 115/485 [00:29<01:36,  3.84it/s]
 24%|██▍       | 116/485 [00:30<01:36,  3.84it/s]
 24%|██▍       | 117/485 [00:30<01:35,  3.84it/s]
 24%|██▍       | 118/485 [00:30<01:35,  3.84it/s]
 25%|██▍       | 119/485 [00:31<01:35,  3.84it/s]
 25%|██▍       | 120/485 [00:31<01:35,  3.84it/s]
 25%|██▍       | 121/485 [00:31<01:34,  3.84it/s]
 25%|██▌       | 122/485 [00:31<01:34,  3.83it/s]
 25%|██▌       | 123/485 [00:32<01:34,  3.82it/s]
 26%|██▌       | 124/485 [00:32<01:34,  3.82it/s]
 26%|██▌       | 125/485 [00:32<01:34,  3.82it/s]
 26%|██▌       | 126/485 [00:32<01:33,  3.83it/s]
 26%|██▌       | 127/485 [00:33<01:33,  3.83it/s]
 26%|██▋       | 128/485 [00:33<01:33,  3.83it/s]
 27%|██▋       | 129/485 [00:33<01:32,  3.83it/s]
 27%|██▋       | 130/485 [00:33<01:32,  3.83it/s]
 27%|██▋       | 131/485 [00:34<01:32,  3.83it/s]
 27%|██▋       | 132/485 [00:34<01:32,  3.83it/s]
 27%|██▋       | 133/485 [00:34<01:31,  3.83it/s]
 28%|██▊       | 134/485 [00:34<01:31,  3.83it/s]
 28%|██▊       | 135/485 [00:35<01:31,  3.84it/s]
 28%|██▊       | 136/485 [00:35<01:30,  3.84it/s]
 28%|██▊       | 137/485 [00:35<01:30,  3.84it/s]
 28%|██▊       | 138/485 [00:35<01:30,  3.84it/s]
 29%|██▊       | 139/485 [00:36<01:30,  3.84it/s]
 29%|██▉       | 140/485 [00:36<01:29,  3.84it/s]
 29%|██▉       | 141/485 [00:36<01:29,  3.84it/s]
 29%|██▉       | 142/485 [00:36<01:29,  3.84it/s]
 29%|██▉       | 143/485 [00:37<01:29,  3.84it/s]
 30%|██▉       | 144/485 [00:37<01:28,  3.83it/s]
 30%|██▉       | 145/485 [00:37<01:28,  3.83it/s]
 30%|███       | 146/485 [00:38<01:28,  3.83it/s]
 30%|███       | 147/485 [00:38<01:28,  3.82it/s]
 31%|███       | 148/485 [00:38<01:28,  3.82it/s]
 31%|███       | 149/485 [00:39<01:28,  3.81it/s]
 31%|███       | 150/485 [00:39<01:27,  3.81it/s]
 31%|███       | 151/485 [00:39<01:27,  3.81it/s]
 31%|███▏      | 152/485 [00:39<01:27,  3.81it/s]
 32%|███▏      | 153/485 [00:40<01:27,  3.81it/s]
 32%|███▏      | 154/485 [00:40<01:26,  3.81it/s]
 32%|███▏      | 155/485 [00:40<01:26,  3.81it/s]
 32%|███▏      | 156/485 [00:40<01:26,  3.81it/s]
 32%|███▏      | 157/485 [00:41<01:26,  3.81it/s]
 33%|███▎      | 158/485 [00:41<01:25,  3.81it/s]
 33%|███▎      | 159/485 [00:41<01:25,  3.81it/s]
 33%|███▎      | 160/485 [00:42<01:25,  3.81it/s]
 33%|███▎      | 161/485 [00:42<01:25,  3.81it/s]
 33%|███▎      | 162/485 [00:42<01:24,  3.80it/s]
 34%|███▎      | 163/485 [00:42<01:24,  3.80it/s]
 34%|███▍      | 164/485 [00:43<01:24,  3.80it/s]
 34%|███▍      | 165/485 [00:43<01:24,  3.80it/s]
 34%|███▍      | 166/485 [00:43<01:23,  3.80it/s]
 34%|███▍      | 167/485 [00:43<01:23,  3.80it/s]
 35%|███▍      | 168/485 [00:44<01:23,  3.80it/s]
 35%|███▍      | 169/485 [00:44<01:23,  3.80it/s]
 35%|███▌      | 170/485 [00:44<01:22,  3.80it/s]
 35%|███▌      | 171/485 [00:45<01:22,  3.80it/s]
 35%|███▌      | 172/485 [00:45<01:22,  3.80it/s]
 36%|███▌      | 173/485 [00:45<01:22,  3.80it/s]
 36%|███▌      | 174/485 [00:45<01:21,  3.79it/s]
 36%|███▌      | 175/485 [00:46<01:21,  3.79it/s]
 36%|███▋      | 176/485 [00:46<01:21,  3.79it/s]
 36%|███▋      | 177/485 [00:46<01:21,  3.79it/s]
 37%|███▋      | 178/485 [00:46<01:20,  3.79it/s]
 37%|███▋      | 179/485 [00:47<01:20,  3.79it/s]
 37%|███▋      | 180/485 [00:47<01:20,  3.79it/s]
 37%|███▋      | 181/485 [00:47<01:20,  3.79it/s]
 38%|███▊      | 182/485 [00:47<01:19,  3.79it/s]
 38%|███▊      | 183/485 [00:48<01:19,  3.79it/s]
 38%|███▊      | 184/485 [00:48<01:19,  3.78it/s]
 38%|███▊      | 185/485 [00:48<01:19,  3.78it/s]
 38%|███▊      | 186/485 [00:49<01:19,  3.78it/s]
 39%|███▊      | 187/485 [00:49<01:18,  3.77it/s]
 39%|███▉      | 188/485 [00:49<01:18,  3.77it/s]
 39%|███▉      | 189/485 [00:50<01:18,  3.77it/s]
 39%|███▉      | 190/485 [00:50<01:18,  3.77it/s]
 39%|███▉      | 191/485 [00:50<01:17,  3.77it/s]
 40%|███▉      | 192/485 [00:50<01:17,  3.77it/s]
 40%|███▉      | 193/485 [00:51<01:17,  3.77it/s]
 40%|████      | 194/485 [00:51<01:17,  3.77it/s]
 40%|████      | 195/485 [00:51<01:16,  3.77it/s]
 40%|████      | 196/485 [00:52<01:16,  3.77it/s]
 41%|████      | 197/485 [00:52<01:16,  3.77it/s]
 41%|████      | 198/485 [00:52<01:16,  3.77it/s]
 41%|████      | 199/485 [00:52<01:15,  3.77it/s]
 41%|████      | 200/485 [00:53<01:15,  3.77it/s]
 41%|████▏     | 201/485 [00:53<01:15,  3.77it/s]
 42%|████▏     | 202/485 [00:53<01:15,  3.77it/s]
 42%|████▏     | 203/485 [00:53<01:14,  3.77it/s]
 42%|████▏     | 204/485 [00:54<01:14,  3.77it/s]
 42%|████▏     | 205/485 [00:54<01:14,  3.77it/s]
 42%|████▏     | 206/485 [00:54<01:13,  3.77it/s]
 43%|████▎     | 207/485 [00:54<01:13,  3.77it/s]
 43%|████▎     | 208/485 [00:55<01:13,  3.77it/s]
 43%|████▎     | 209/485 [00:55<01:13,  3.77it/s]
 43%|████▎     | 210/485 [00:55<01:12,  3.77it/s]
 44%|████▎     | 211/485 [00:55<01:12,  3.77it/s]
 44%|████▎     | 212/485 [00:56<01:12,  3.78it/s]
 44%|████▍     | 213/485 [00:56<01:12,  3.78it/s]
 44%|████▍     | 214/485 [00:56<01:11,  3.78it/s]
 44%|████▍     | 215/485 [00:56<01:11,  3.78it/s]
 45%|████▍     | 216/485 [00:57<01:11,  3.78it/s]
 45%|████▍     | 217/485 [00:57<01:10,  3.78it/s]
 45%|████▍     | 218/485 [00:57<01:10,  3.78it/s]
 45%|████▌     | 219/485 [00:57<01:10,  3.78it/s]
 45%|████▌     | 220/485 [00:58<01:10,  3.78it/s]
 46%|████▌     | 221/485 [00:58<01:09,  3.78it/s]
 46%|████▌     | 222/485 [00:58<01:09,  3.78it/s]
 46%|████▌     | 223/485 [00:58<01:09,  3.78it/s]
 46%|████▌     | 224/485 [00:59<01:09,  3.78it/s]
 46%|████▋     | 225/485 [00:59<01:08,  3.78it/s]
 47%|████▋     | 226/485 [00:59<01:08,  3.78it/s]
 47%|████▋     | 227/485 [01:00<01:08,  3.78it/s]
 47%|████▋     | 228/485 [01:00<01:08,  3.78it/s]
 47%|████▋     | 229/485 [01:00<01:07,  3.78it/s]
 47%|████▋     | 230/485 [01:00<01:07,  3.78it/s]
 48%|████▊     | 231/485 [01:01<01:07,  3.78it/s]
 48%|████▊     | 232/485 [01:01<01:06,  3.78it/s]
 48%|████▊     | 233/485 [01:01<01:06,  3.78it/s]
 48%|████▊     | 234/485 [01:01<01:06,  3.78it/s]
 48%|████▊     | 235/485 [01:02<01:06,  3.78it/s]
 49%|████▊     | 236/485 [01:02<01:05,  3.78it/s]
 49%|████▉     | 237/485 [01:02<01:05,  3.78it/s]
 49%|████▉     | 238/485 [01:02<01:05,  3.78it/s]
 49%|████▉     | 239/485 [01:03<01:05,  3.78it/s]
 49%|████▉     | 240/485 [01:03<01:04,  3.78it/s]
 50%|████▉     | 241/485 [01:03<01:04,  3.78it/s]
 50%|████▉     | 242/485 [01:03<01:04,  3.78it/s]
 50%|█████     | 243/485 [01:04<01:03,  3.78it/s]
 50%|█████     | 244/485 [01:04<01:03,  3.78it/s]
 51%|█████     | 245/485 [01:04<01:03,  3.78it/s]
 51%|█████     | 246/485 [01:04<01:03,  3.79it/s]
 51%|█████     | 247/485 [01:05<01:02,  3.79it/s]
 51%|█████     | 248/485 [01:05<01:02,  3.78it/s]
 51%|█████▏    | 249/485 [01:05<01:02,  3.79it/s]
 52%|█████▏    | 250/485 [01:06<01:02,  3.79it/s]
 52%|█████▏    | 251/485 [01:06<01:01,  3.79it/s]
 52%|█████▏    | 252/485 [01:06<01:01,  3.79it/s]
 52%|█████▏    | 253/485 [01:06<01:01,  3.79it/s]
 52%|█████▏    | 254/485 [01:07<01:00,  3.79it/s]
 53%|█████▎    | 255/485 [01:07<01:00,  3.79it/s]
 53%|█████▎    | 256/485 [01:07<01:00,  3.79it/s]
 53%|█████▎    | 257/485 [01:07<01:00,  3.79it/s]
 53%|█████▎    | 258/485 [01:08<00:59,  3.79it/s]
 53%|█████▎    | 259/485 [01:08<00:59,  3.79it/s]
 54%|█████▎    | 260/485 [01:08<00:59,  3.79it/s]
 54%|█████▍    | 261/485 [01:08<00:59,  3.79it/s]
 54%|█████▍    | 262/485 [01:09<00:58,  3.79it/s]
 54%|█████▍    | 263/485 [01:09<00:58,  3.79it/s]
 54%|█████▍    | 264/485 [01:09<00:58,  3.79it/s]
 55%|█████▍    | 265/485 [01:09<00:58,  3.79it/s]
 55%|█████▍    | 266/485 [01:10<00:57,  3.79it/s]
 55%|█████▌    | 267/485 [01:10<00:57,  3.79it/s]
 55%|█████▌    | 268/485 [01:10<00:57,  3.79it/s]
 55%|█████▌    | 269/485 [01:10<00:57,  3.79it/s]
 56%|█████▌    | 270/485 [01:11<00:56,  3.79it/s]
 56%|█████▌    | 271/485 [01:11<00:56,  3.79it/s]
 56%|█████▌    | 272/485 [01:11<00:56,  3.79it/s]
 56%|█████▋    | 273/485 [01:12<00:55,  3.79it/s]
 56%|█████▋    | 274/485 [01:12<00:55,  3.79it/s]
 57%|█████▋    | 275/485 [01:12<00:55,  3.79it/s]
 57%|█████▋    | 276/485 [01:12<00:55,  3.79it/s]
 57%|█████▋    | 277/485 [01:13<00:54,  3.79it/s]
 57%|█████▋    | 278/485 [01:13<00:54,  3.79it/s]
 58%|█████▊    | 279/485 [01:13<00:54,  3.79it/s]
 58%|█████▊    | 280/485 [01:13<00:54,  3.79it/s]
 58%|█████▊    | 281/485 [01:14<00:53,  3.79it/s]
 58%|█████▊    | 282/485 [01:14<00:53,  3.79it/s]
 58%|█████▊    | 283/485 [01:14<00:53,  3.79it/s]
 59%|█████▊    | 284/485 [01:14<00:53,  3.79it/s]
 59%|█████▉    | 285/485 [01:15<00:52,  3.79it/s]
 59%|█████▉    | 286/485 [01:15<00:52,  3.79it/s]
 59%|█████▉    | 287/485 [01:15<00:52,  3.79it/s]
 59%|█████▉    | 288/485 [01:16<00:51,  3.79it/s]
 60%|█████▉    | 289/485 [01:16<00:51,  3.79it/s]
 60%|█████▉    | 290/485 [01:16<00:51,  3.79it/s]
 60%|██████    | 291/485 [01:16<00:51,  3.79it/s]
 60%|██████    | 292/485 [01:17<00:50,  3.79it/s]
 60%|██████    | 293/485 [01:17<00:50,  3.79it/s]
 61%|██████    | 294/485 [01:17<00:50,  3.79it/s]
 61%|██████    | 295/485 [01:17<00:50,  3.79it/s]
 61%|██████    | 296/485 [01:18<00:49,  3.79it/s]
 61%|██████    | 297/485 [01:18<00:49,  3.79it/s]
 61%|██████▏   | 298/485 [01:18<00:49,  3.79it/s]
 62%|██████▏   | 299/485 [01:18<00:49,  3.79it/s]
 62%|██████▏   | 300/485 [01:19<00:48,  3.79it/s]
 62%|██████▏   | 301/485 [01:19<00:48,  3.79it/s]
 62%|██████▏   | 302/485 [01:19<00:48,  3.79it/s]
 62%|██████▏   | 303/485 [01:19<00:48,  3.79it/s]
 63%|██████▎   | 304/485 [01:20<00:47,  3.79it/s]
 63%|██████▎   | 305/485 [01:20<00:47,  3.79it/s]
 63%|██████▎   | 306/485 [01:20<00:47,  3.79it/s]
 63%|██████▎   | 307/485 [01:20<00:46,  3.79it/s]
 64%|██████▎   | 308/485 [01:21<00:46,  3.79it/s]
 64%|██████▎   | 309/485 [01:21<00:46,  3.79it/s]
 64%|██████▍   | 310/485 [01:21<00:46,  3.79it/s]
 64%|██████▍   | 311/485 [01:21<00:45,  3.79it/s]
 64%|██████▍   | 312/485 [01:22<00:45,  3.79it/s]
 65%|██████▍   | 313/485 [01:22<00:45,  3.79it/s]
 65%|██████▍   | 314/485 [01:22<00:45,  3.79it/s]
 65%|██████▍   | 315/485 [01:23<00:44,  3.79it/s]
 65%|██████▌   | 316/485 [01:23<00:44,  3.79it/s]
 65%|██████▌   | 317/485 [01:23<00:44,  3.79it/s]
 66%|██████▌   | 318/485 [01:23<00:44,  3.79it/s]
 66%|██████▌   | 319/485 [01:24<00:43,  3.79it/s]
 66%|██████▌   | 320/485 [01:24<00:43,  3.79it/s]
 66%|██████▌   | 321/485 [01:24<00:43,  3.79it/s]
 66%|██████▋   | 322/485 [01:24<00:42,  3.79it/s]
 67%|██████▋   | 323/485 [01:25<00:42,  3.79it/s]
 67%|██████▋   | 324/485 [01:25<00:42,  3.79it/s]
 67%|██████▋   | 325/485 [01:25<00:42,  3.79it/s]
 67%|██████▋   | 326/485 [01:25<00:41,  3.79it/s]
 67%|██████▋   | 327/485 [01:26<00:41,  3.79it/s]
 68%|██████▊   | 328/485 [01:26<00:41,  3.79it/s]
 68%|██████▊   | 329/485 [01:26<00:41,  3.79it/s]
 68%|██████▊   | 330/485 [01:27<00:40,  3.79it/s]
 68%|██████▊   | 331/485 [01:27<00:40,  3.79it/s]
 68%|██████▊   | 332/485 [01:27<00:40,  3.79it/s]
 69%|██████▊   | 333/485 [01:27<00:40,  3.79it/s]
 69%|██████▉   | 334/485 [01:28<00:39,  3.79it/s]
 69%|██████▉   | 335/485 [01:28<00:39,  3.79it/s]
 69%|██████▉   | 336/485 [01:28<00:39,  3.79it/s]
 69%|██████▉   | 337/485 [01:28<00:39,  3.79it/s]
 70%|██████▉   | 338/485 [01:29<00:38,  3.79it/s]
 70%|██████▉   | 339/485 [01:29<00:38,  3.79it/s]
 70%|███████   | 340/485 [01:29<00:38,  3.79it/s]
 70%|███████   | 341/485 [01:29<00:37,  3.79it/s]
 71%|███████   | 342/485 [01:30<00:37,  3.79it/s]
 71%|███████   | 343/485 [01:30<00:37,  3.79it/s]
 71%|███████   | 344/485 [01:30<00:37,  3.79it/s]
 71%|███████   | 345/485 [01:30<00:36,  3.79it/s]
 71%|███████▏  | 346/485 [01:31<00:36,  3.79it/s]
 72%|███████▏  | 347/485 [01:31<00:36,  3.79it/s]
 72%|███████▏  | 348/485 [01:31<00:36,  3.79it/s]
 72%|███████▏  | 349/485 [01:32<00:35,  3.79it/s]
 72%|███████▏  | 350/485 [01:32<00:35,  3.79it/s]
 72%|███████▏  | 351/485 [01:32<00:35,  3.79it/s]
 73%|███████▎  | 352/485 [01:32<00:35,  3.79it/s]
 73%|███████▎  | 353/485 [01:33<00:34,  3.79it/s]
 73%|███████▎  | 354/485 [01:33<00:34,  3.79it/s]
 73%|███████▎  | 355/485 [01:33<00:34,  3.79it/s]
 73%|███████▎  | 356/485 [01:33<00:34,  3.79it/s]
 74%|███████▎  | 357/485 [01:34<00:33,  3.79it/s]
 74%|███████▍  | 358/485 [01:34<00:33,  3.79it/s]
 74%|███████▍  | 359/485 [01:34<00:33,  3.79it/s]
 74%|███████▍  | 360/485 [01:34<00:32,  3.79it/s]
 74%|███████▍  | 361/485 [01:35<00:32,  3.79it/s]
 75%|███████▍  | 362/485 [01:35<00:32,  3.79it/s]
 75%|███████▍  | 363/485 [01:35<00:32,  3.79it/s]
 75%|███████▌  | 364/485 [01:36<00:31,  3.79it/s]
 75%|███████▌  | 365/485 [01:36<00:31,  3.79it/s]
 75%|███████▌  | 366/485 [01:36<00:31,  3.79it/s]
 76%|███████▌  | 367/485 [01:36<00:31,  3.79it/s]
 76%|███████▌  | 368/485 [01:37<00:30,  3.79it/s]
 76%|███████▌  | 369/485 [01:37<00:30,  3.79it/s]
 76%|███████▋  | 370/485 [01:37<00:30,  3.79it/s]
 76%|███████▋  | 371/485 [01:37<00:30,  3.79it/s]
 77%|███████▋  | 372/485 [01:38<00:29,  3.79it/s]
 77%|███████▋  | 373/485 [01:38<00:29,  3.79it/s]
 77%|███████▋  | 374/485 [01:38<00:29,  3.79it/s]
 77%|███████▋  | 375/485 [01:38<00:29,  3.79it/s]
 78%|███████▊  | 376/485 [01:39<00:28,  3.79it/s]
 78%|███████▊  | 377/485 [01:39<00:28,  3.79it/s]
 78%|███████▊  | 378/485 [01:39<00:28,  3.79it/s]
 78%|███████▊  | 379/485 [01:39<00:27,  3.79it/s]
 78%|███████▊  | 380/485 [01:40<00:27,  3.79it/s]
 79%|███████▊  | 381/485 [01:40<00:27,  3.79it/s]
 79%|███████▉  | 382/485 [01:40<00:27,  3.79it/s]
 79%|███████▉  | 383/485 [01:41<00:26,  3.79it/s]
 79%|███████▉  | 384/485 [01:41<00:26,  3.79it/s]
 79%|███████▉  | 385/485 [01:41<00:26,  3.79it/s]
 80%|███████▉  | 386/485 [01:41<00:26,  3.79it/s]
 80%|███████▉  | 387/485 [01:42<00:25,  3.79it/s]
 80%|████████  | 388/485 [01:42<00:25,  3.79it/s]
 80%|████████  | 389/485 [01:42<00:25,  3.79it/s]
 80%|████████  | 390/485 [01:42<00:25,  3.79it/s]
 81%|████████  | 391/485 [01:43<00:24,  3.79it/s]
 81%|████████  | 392/485 [01:43<00:24,  3.79it/s]
 81%|████████  | 393/485 [01:43<00:24,  3.79it/s]
 81%|████████  | 394/485 [01:43<00:23,  3.79it/s]
 81%|████████▏ | 395/485 [01:44<00:23,  3.79it/s]
 82%|████████▏ | 396/485 [01:44<00:23,  3.79it/s]
 82%|████████▏ | 397/485 [01:44<00:23,  3.79it/s]
 82%|████████▏ | 398/485 [01:44<00:22,  3.79it/s]
 82%|████████▏ | 399/485 [01:45<00:22,  3.79it/s]
 82%|████████▏ | 400/485 [01:45<00:22,  3.79it/s]
 83%|████████▎ | 401/485 [01:45<00:22,  3.79it/s]
 83%|████████▎ | 402/485 [01:45<00:21,  3.79it/s]
 83%|████████▎ | 403/485 [01:46<00:21,  3.79it/s]
 83%|████████▎ | 404/485 [01:46<00:21,  3.79it/s]
 84%|████████▎ | 405/485 [01:46<00:21,  3.79it/s]
 84%|████████▎ | 406/485 [01:46<00:20,  3.79it/s]
 84%|████████▍ | 407/485 [01:47<00:20,  3.79it/s]
 84%|████████▍ | 408/485 [01:47<00:20,  3.79it/s]
 84%|████████▍ | 409/485 [01:47<00:20,  3.79it/s]
 85%|████████▍ | 410/485 [01:48<00:19,  3.79it/s]
 85%|████████▍ | 411/485 [01:48<00:19,  3.80it/s]
 85%|████████▍ | 412/485 [01:48<00:19,  3.80it/s]
 85%|████████▌ | 413/485 [01:48<00:18,  3.80it/s]
 85%|████████▌ | 414/485 [01:49<00:18,  3.80it/s]
 86%|████████▌ | 415/485 [01:49<00:18,  3.80it/s]
 86%|████████▌ | 416/485 [01:49<00:18,  3.80it/s]
 86%|████████▌ | 417/485 [01:49<00:17,  3.80it/s]
 86%|████████▌ | 418/485 [01:50<00:17,  3.80it/s]
 86%|████████▋ | 419/485 [01:50<00:17,  3.80it/s]
 87%|████████▋ | 420/485 [01:50<00:17,  3.80it/s]
 87%|████████▋ | 421/485 [01:50<00:16,  3.80it/s]
 87%|████████▋ | 422/485 [01:51<00:16,  3.80it/s]
 87%|████████▋ | 423/485 [01:51<00:16,  3.80it/s]
 87%|████████▋ | 424/485 [01:51<00:16,  3.80it/s]
 88%|████████▊ | 425/485 [01:51<00:15,  3.80it/s]
 88%|████████▊ | 426/485 [01:52<00:15,  3.80it/s]
 88%|████████▊ | 427/485 [01:52<00:15,  3.80it/s]
 88%|████████▊ | 428/485 [01:52<00:15,  3.80it/s]
 88%|████████▊ | 429/485 [01:52<00:14,  3.80it/s]
 89%|████████▊ | 430/485 [01:53<00:14,  3.80it/s]
 89%|████████▉ | 431/485 [01:53<00:14,  3.80it/s]
 89%|████████▉ | 432/485 [01:53<00:13,  3.80it/s]
 89%|████████▉ | 433/485 [01:53<00:13,  3.80it/s]
 89%|████████▉ | 434/485 [01:54<00:13,  3.80it/s]
 90%|████████▉ | 435/485 [01:54<00:13,  3.80it/s]
 90%|████████▉ | 436/485 [01:54<00:12,  3.80it/s]
 90%|█████████ | 437/485 [01:55<00:12,  3.80it/s]
 90%|█████████ | 438/485 [01:55<00:12,  3.80it/s]
 91%|█████████ | 439/485 [01:55<00:12,  3.79it/s]
 91%|█████████ | 440/485 [01:55<00:11,  3.79it/s]
 91%|█████████ | 441/485 [01:56<00:11,  3.79it/s]
 91%|█████████ | 442/485 [01:56<00:11,  3.79it/s]
 91%|█████████▏| 443/485 [01:56<00:11,  3.79it/s]
 92%|█████████▏| 444/485 [01:57<00:10,  3.79it/s]
 92%|█████████▏| 445/485 [01:57<00:10,  3.79it/s]
 92%|█████████▏| 446/485 [01:57<00:10,  3.79it/s]
 92%|█████████▏| 447/485 [01:57<00:10,  3.79it/s]
 92%|█████████▏| 448/485 [01:58<00:09,  3.79it/s]
 93%|█████████▎| 449/485 [01:58<00:09,  3.79it/s]
 93%|█████████▎| 450/485 [01:58<00:09,  3.79it/s]
 93%|█████████▎| 451/485 [01:59<00:08,  3.79it/s]
 93%|█████████▎| 452/485 [01:59<00:08,  3.79it/s]
 93%|█████████▎| 453/485 [01:59<00:08,  3.79it/s]
 94%|█████████▎| 454/485 [01:59<00:08,  3.79it/s]
 94%|█████████▍| 455/485 [02:00<00:07,  3.79it/s]
 94%|█████████▍| 456/485 [02:00<00:07,  3.79it/s]
 94%|█████████▍| 457/485 [02:00<00:07,  3.79it/s]
 94%|█████████▍| 458/485 [02:00<00:07,  3.79it/s]
 95%|█████████▍| 459/485 [02:01<00:06,  3.79it/s]
 95%|█████████▍| 460/485 [02:01<00:06,  3.79it/s]
 95%|█████████▌| 461/485 [02:01<00:06,  3.79it/s]
 95%|█████████▌| 462/485 [02:02<00:06,  3.79it/s]
 95%|█████████▌| 463/485 [02:02<00:05,  3.78it/s]
 96%|█████████▌| 464/485 [02:02<00:05,  3.78it/s]
 96%|█████████▌| 465/485 [02:02<00:05,  3.78it/s]
 96%|█████████▌| 466/485 [02:03<00:05,  3.78it/s]
 96%|█████████▋| 467/485 [02:03<00:04,  3.78it/s]
 96%|█████████▋| 468/485 [02:03<00:04,  3.78it/s]
 97%|█████████▋| 469/485 [02:03<00:04,  3.78it/s]
 97%|█████████▋| 470/485 [02:04<00:03,  3.78it/s]
 97%|█████████▋| 471/485 [02:04<00:03,  3.78it/s]
 97%|█████████▋| 472/485 [02:04<00:03,  3.78it/s]
 98%|█████████▊| 473/485 [02:05<00:03,  3.78it/s]
 98%|█████████▊| 474/485 [02:05<00:02,  3.78it/s]
 98%|█████████▊| 475/485 [02:05<00:02,  3.78it/s]
 98%|█████████▊| 476/485 [02:06<00:02,  3.78it/s]
 98%|█████████▊| 477/485 [02:06<00:02,  3.78it/s]
 99%|█████████▊| 478/485 [02:06<00:01,  3.77it/s]
 99%|█████████▉| 479/485 [02:06<00:01,  3.77it/s]
 99%|█████████▉| 480/485 [02:07<00:01,  3.77it/s]
 99%|█████████▉| 481/485 [02:07<00:01,  3.77it/s]
 99%|█████████▉| 482/485 [02:07<00:00,  3.77it/s]
100%|█████████▉| 483/485 [02:07<00:00,  3.77it/s]
100%|█████████▉| 484/485 [02:08<00:00,  3.77it/s]
100%|██████████| 485/485 [02:08<00:00,  3.77it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: challenge_video_output.mp4 

CPU times: user 2min 19s, sys: 30 s, total: 2min 49s
Wall time: 2min 9s
In [222]:
video_output1 = 'harder_challenge_video_output.mp4'
video_input1 = VideoFileClip('harder_challenge_video.mp4')
processed_video = video_input1.fl_image(pipeline)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video harder_challenge_video_output.mp4
[MoviePy] Writing video harder_challenge_video_output.mp4
  0%|          | 0/1200 [00:00<?, ?it/s]
  0%|          | 1/1200 [00:00<05:38,  3.54it/s]
  0%|          | 2/1200 [00:00<06:00,  3.32it/s]
  0%|          | 3/1200 [00:00<06:12,  3.21it/s]
  0%|          | 4/1200 [00:01<06:51,  2.91it/s]
  0%|          | 5/1200 [00:01<06:40,  2.98it/s]
  0%|          | 6/1200 [00:01<06:31,  3.05it/s]
  1%|          | 7/1200 [00:02<06:26,  3.08it/s]
  1%|          | 8/1200 [00:02<06:23,  3.11it/s]
  1%|          | 9/1200 [00:02<06:19,  3.14it/s]
  1%|          | 10/1200 [00:03<06:15,  3.17it/s]
  1%|          | 11/1200 [00:03<06:15,  3.17it/s]
  1%|          | 12/1200 [00:03<06:26,  3.07it/s]
  1%|          | 13/1200 [00:04<06:35,  3.00it/s]
  1%|          | 14/1200 [00:04<06:36,  2.99it/s]
  1%|▏         | 15/1200 [00:05<06:36,  2.99it/s]
  1%|▏         | 16/1200 [00:05<06:35,  3.00it/s]
  1%|▏         | 17/1200 [00:05<06:33,  3.01it/s]
  2%|▏         | 18/1200 [00:05<06:31,  3.02it/s]
  2%|▏         | 19/1200 [00:06<06:29,  3.03it/s]
  2%|▏         | 20/1200 [00:06<06:27,  3.04it/s]
  2%|▏         | 21/1200 [00:06<06:26,  3.05it/s]
  2%|▏         | 22/1200 [00:07<06:26,  3.05it/s]
  2%|▏         | 23/1200 [00:07<06:24,  3.06it/s]
  2%|▏         | 24/1200 [00:07<06:22,  3.08it/s]
  2%|▏         | 25/1200 [00:08<06:20,  3.09it/s]
  2%|▏         | 26/1200 [00:08<06:18,  3.10it/s]
  2%|▏         | 27/1200 [00:08<06:16,  3.11it/s]
  2%|▏         | 28/1200 [00:08<06:15,  3.12it/s]
  2%|▏         | 29/1200 [00:09<06:14,  3.13it/s]
  2%|▎         | 30/1200 [00:09<06:13,  3.14it/s]
  3%|▎         | 31/1200 [00:09<06:12,  3.14it/s]
  3%|▎         | 32/1200 [00:10<06:11,  3.15it/s]
  3%|▎         | 33/1200 [00:10<06:10,  3.15it/s]
  3%|▎         | 34/1200 [00:10<06:08,  3.16it/s]
  3%|▎         | 35/1200 [00:11<06:07,  3.17it/s]
  3%|▎         | 36/1200 [00:11<06:06,  3.17it/s]
  3%|▎         | 37/1200 [00:11<06:08,  3.15it/s]
  3%|▎         | 38/1200 [00:12<06:09,  3.15it/s]
  3%|▎         | 39/1200 [00:12<06:08,  3.15it/s]
  3%|▎         | 40/1200 [00:12<06:07,  3.15it/s]
  3%|▎         | 41/1200 [00:12<06:06,  3.16it/s]
  4%|▎         | 42/1200 [00:13<06:05,  3.17it/s]
  4%|▎         | 43/1200 [00:13<06:04,  3.17it/s]
  4%|▎         | 44/1200 [00:13<06:04,  3.18it/s]
  4%|▍         | 45/1200 [00:14<06:03,  3.18it/s]
  4%|▍         | 46/1200 [00:14<06:02,  3.18it/s]
  4%|▍         | 47/1200 [00:14<06:01,  3.19it/s]
  4%|▍         | 48/1200 [00:15<06:01,  3.19it/s]
  4%|▍         | 49/1200 [00:15<06:00,  3.19it/s]
  4%|▍         | 50/1200 [00:15<06:00,  3.19it/s]
  4%|▍         | 51/1200 [00:15<05:59,  3.19it/s]
  4%|▍         | 52/1200 [00:16<05:59,  3.20it/s]
  4%|▍         | 53/1200 [00:16<05:58,  3.20it/s]
  4%|▍         | 54/1200 [00:16<05:58,  3.20it/s]
  5%|▍         | 55/1200 [00:17<05:58,  3.20it/s]
  5%|▍         | 56/1200 [00:17<05:57,  3.20it/s]
  5%|▍         | 57/1200 [00:17<05:56,  3.20it/s]
  5%|▍         | 58/1200 [00:18<05:57,  3.20it/s]
  5%|▍         | 59/1200 [00:18<05:56,  3.20it/s]
  5%|▌         | 60/1200 [00:18<05:56,  3.19it/s]
  5%|▌         | 61/1200 [00:19<05:56,  3.20it/s]
  5%|▌         | 62/1200 [00:19<05:55,  3.20it/s]
  5%|▌         | 63/1200 [00:19<05:55,  3.20it/s]
  5%|▌         | 64/1200 [00:19<05:54,  3.20it/s]
  5%|▌         | 65/1200 [00:20<05:53,  3.21it/s]
  6%|▌         | 66/1200 [00:20<05:53,  3.21it/s]
  6%|▌         | 67/1200 [00:20<05:52,  3.21it/s]
  6%|▌         | 68/1200 [00:21<05:51,  3.22it/s]
  6%|▌         | 69/1200 [00:21<05:51,  3.22it/s]
  6%|▌         | 70/1200 [00:21<05:51,  3.22it/s]
  6%|▌         | 71/1200 [00:22<05:50,  3.22it/s]
  6%|▌         | 72/1200 [00:22<05:49,  3.22it/s]
  6%|▌         | 73/1200 [00:22<05:49,  3.22it/s]
  6%|▌         | 74/1200 [00:22<05:48,  3.23it/s]
  6%|▋         | 75/1200 [00:23<05:48,  3.23it/s]
  6%|▋         | 76/1200 [00:23<05:48,  3.23it/s]
  6%|▋         | 77/1200 [00:23<05:48,  3.22it/s]
  6%|▋         | 78/1200 [00:24<05:48,  3.22it/s]
  7%|▋         | 79/1200 [00:24<05:49,  3.21it/s]
  7%|▋         | 80/1200 [00:24<05:49,  3.21it/s]
  7%|▋         | 81/1200 [00:25<05:49,  3.20it/s]
  7%|▋         | 82/1200 [00:25<05:49,  3.19it/s]
  7%|▋         | 83/1200 [00:25<05:49,  3.19it/s]
  7%|▋         | 84/1200 [00:26<05:49,  3.19it/s]
  7%|▋         | 85/1200 [00:26<05:50,  3.18it/s]
  7%|▋         | 86/1200 [00:27<05:50,  3.18it/s]
  7%|▋         | 87/1200 [00:27<05:50,  3.17it/s]
  7%|▋         | 88/1200 [00:27<05:51,  3.16it/s]
  7%|▋         | 89/1200 [00:28<05:51,  3.16it/s]
  8%|▊         | 90/1200 [00:28<05:51,  3.16it/s]
  8%|▊         | 91/1200 [00:28<05:52,  3.15it/s]
  8%|▊         | 92/1200 [00:29<05:52,  3.14it/s]
  8%|▊         | 93/1200 [00:29<05:53,  3.13it/s]
  8%|▊         | 94/1200 [00:30<05:54,  3.12it/s]
  8%|▊         | 95/1200 [00:30<05:53,  3.13it/s]
  8%|▊         | 96/1200 [00:30<05:52,  3.13it/s]
  8%|▊         | 97/1200 [00:30<05:52,  3.13it/s]
  8%|▊         | 98/1200 [00:31<05:51,  3.13it/s]
  8%|▊         | 99/1200 [00:31<05:51,  3.14it/s]
  8%|▊         | 100/1200 [00:31<05:50,  3.14it/s]
  8%|▊         | 101/1200 [00:32<05:49,  3.14it/s]
  8%|▊         | 102/1200 [00:32<05:49,  3.14it/s]
  9%|▊         | 103/1200 [00:32<05:49,  3.14it/s]
  9%|▊         | 104/1200 [00:33<05:49,  3.14it/s]
  9%|▉         | 105/1200 [00:33<05:48,  3.14it/s]
  9%|▉         | 106/1200 [00:33<05:48,  3.14it/s]
  9%|▉         | 107/1200 [00:34<05:47,  3.15it/s]
  9%|▉         | 108/1200 [00:34<05:46,  3.15it/s]
  9%|▉         | 109/1200 [00:34<05:46,  3.15it/s]
  9%|▉         | 110/1200 [00:34<05:45,  3.16it/s]
  9%|▉         | 111/1200 [00:35<05:44,  3.16it/s]
  9%|▉         | 112/1200 [00:35<05:44,  3.16it/s]
  9%|▉         | 113/1200 [00:35<05:43,  3.16it/s]
 10%|▉         | 114/1200 [00:36<05:43,  3.16it/s]
 10%|▉         | 115/1200 [00:36<05:42,  3.16it/s]
 10%|▉         | 116/1200 [00:36<05:42,  3.17it/s]
 10%|▉         | 117/1200 [00:36<05:41,  3.17it/s]
 10%|▉         | 118/1200 [00:37<05:41,  3.17it/s]
 10%|▉         | 119/1200 [00:37<05:41,  3.17it/s]
 10%|█         | 120/1200 [00:37<05:40,  3.17it/s]
 10%|█         | 121/1200 [00:38<05:40,  3.17it/s]
 10%|█         | 122/1200 [00:38<05:39,  3.17it/s]
 10%|█         | 123/1200 [00:38<05:39,  3.18it/s]
 10%|█         | 124/1200 [00:39<05:38,  3.18it/s]
 10%|█         | 125/1200 [00:39<05:37,  3.18it/s]
 10%|█         | 126/1200 [00:39<05:37,  3.18it/s]
 11%|█         | 127/1200 [00:39<05:36,  3.19it/s]
 11%|█         | 128/1200 [00:40<05:36,  3.19it/s]
 11%|█         | 129/1200 [00:40<05:35,  3.19it/s]
 11%|█         | 130/1200 [00:40<05:34,  3.19it/s]
 11%|█         | 131/1200 [00:40<05:34,  3.20it/s]
 11%|█         | 132/1200 [00:41<05:34,  3.20it/s]
 11%|█         | 133/1200 [00:41<05:33,  3.20it/s]
 11%|█         | 134/1200 [00:41<05:32,  3.20it/s]
 11%|█▏        | 135/1200 [00:42<05:32,  3.20it/s]
 11%|█▏        | 136/1200 [00:42<05:31,  3.21it/s]
 11%|█▏        | 137/1200 [00:42<05:31,  3.21it/s]
 12%|█▏        | 138/1200 [00:42<05:30,  3.21it/s]
 12%|█▏        | 139/1200 [00:43<05:30,  3.21it/s]
 12%|█▏        | 140/1200 [00:43<05:29,  3.22it/s]
 12%|█▏        | 141/1200 [00:43<05:28,  3.22it/s]
 12%|█▏        | 142/1200 [00:44<05:28,  3.22it/s]
 12%|█▏        | 143/1200 [00:44<05:27,  3.22it/s]
 12%|█▏        | 144/1200 [00:44<05:27,  3.23it/s]
 12%|█▏        | 145/1200 [00:44<05:26,  3.23it/s]
 12%|█▏        | 146/1200 [00:45<05:25,  3.23it/s]
 12%|█▏        | 147/1200 [00:45<05:25,  3.24it/s]
 12%|█▏        | 148/1200 [00:45<05:24,  3.24it/s]
 12%|█▏        | 149/1200 [00:45<05:24,  3.24it/s]
 12%|█▎        | 150/1200 [00:46<05:23,  3.24it/s]
 13%|█▎        | 151/1200 [00:46<05:23,  3.25it/s]
 13%|█▎        | 152/1200 [00:46<05:22,  3.25it/s]
 13%|█▎        | 153/1200 [00:47<05:22,  3.25it/s]
 13%|█▎        | 154/1200 [00:47<05:21,  3.25it/s]
 13%|█▎        | 155/1200 [00:47<05:20,  3.26it/s]
 13%|█▎        | 156/1200 [00:47<05:20,  3.26it/s]
 13%|█▎        | 157/1200 [00:48<05:19,  3.26it/s]
 13%|█▎        | 158/1200 [00:48<05:19,  3.26it/s]
 13%|█▎        | 159/1200 [00:48<05:18,  3.27it/s]
 13%|█▎        | 160/1200 [00:48<05:17,  3.27it/s]
 13%|█▎        | 161/1200 [00:49<05:17,  3.27it/s]
 14%|█▎        | 162/1200 [00:49<05:16,  3.28it/s]
 14%|█▎        | 163/1200 [00:49<05:16,  3.28it/s]
 14%|█▎        | 164/1200 [00:49<05:15,  3.28it/s]
 14%|█▍        | 165/1200 [00:50<05:15,  3.28it/s]
 14%|█▍        | 166/1200 [00:50<05:14,  3.28it/s]
 14%|█▍        | 167/1200 [00:50<05:14,  3.29it/s]
 14%|█▍        | 168/1200 [00:51<05:13,  3.29it/s]
 14%|█▍        | 169/1200 [00:51<05:13,  3.29it/s]
 14%|█▍        | 170/1200 [00:51<05:12,  3.29it/s]
 14%|█▍        | 171/1200 [00:51<05:12,  3.29it/s]
 14%|█▍        | 172/1200 [00:52<05:12,  3.29it/s]
 14%|█▍        | 173/1200 [00:52<05:11,  3.29it/s]
 14%|█▍        | 174/1200 [00:52<05:11,  3.30it/s]
 15%|█▍        | 175/1200 [00:53<05:10,  3.30it/s]
 15%|█▍        | 176/1200 [00:53<05:10,  3.30it/s]
 15%|█▍        | 177/1200 [00:53<05:09,  3.30it/s]
 15%|█▍        | 178/1200 [00:53<05:09,  3.30it/s]
 15%|█▍        | 179/1200 [00:54<05:08,  3.31it/s]
 15%|█▌        | 180/1200 [00:54<05:08,  3.31it/s]
 15%|█▌        | 181/1200 [00:54<05:07,  3.31it/s]
 15%|█▌        | 182/1200 [00:54<05:07,  3.31it/s]
 15%|█▌        | 183/1200 [00:55<05:06,  3.31it/s]
 15%|█▌        | 184/1200 [00:55<05:06,  3.31it/s]
 15%|█▌        | 185/1200 [00:55<05:06,  3.32it/s]
 16%|█▌        | 186/1200 [00:56<05:05,  3.32it/s]
 16%|█▌        | 187/1200 [00:56<05:05,  3.32it/s]
 16%|█▌        | 188/1200 [00:56<05:04,  3.32it/s]
 16%|█▌        | 189/1200 [00:56<05:04,  3.32it/s]
 16%|█▌        | 190/1200 [00:57<05:03,  3.32it/s]
 16%|█▌        | 191/1200 [00:57<05:03,  3.33it/s]
 16%|█▌        | 192/1200 [00:57<05:03,  3.33it/s]
 16%|█▌        | 193/1200 [00:57<05:02,  3.33it/s]
 16%|█▌        | 194/1200 [00:58<05:02,  3.33it/s]
 16%|█▋        | 195/1200 [00:58<05:01,  3.33it/s]
 16%|█▋        | 196/1200 [00:58<05:01,  3.33it/s]
 16%|█▋        | 197/1200 [00:59<05:00,  3.33it/s]
 16%|█▋        | 198/1200 [00:59<05:00,  3.33it/s]
 17%|█▋        | 199/1200 [00:59<05:00,  3.34it/s]
 17%|█▋        | 200/1200 [00:59<04:59,  3.34it/s]
 17%|█▋        | 201/1200 [01:00<04:59,  3.34it/s]
 17%|█▋        | 202/1200 [01:00<04:58,  3.34it/s]
 17%|█▋        | 203/1200 [01:00<04:58,  3.34it/s]
 17%|█▋        | 204/1200 [01:01<04:58,  3.34it/s]
 17%|█▋        | 205/1200 [01:01<04:58,  3.34it/s]
 17%|█▋        | 206/1200 [01:01<04:57,  3.34it/s]
 17%|█▋        | 207/1200 [01:01<04:57,  3.34it/s]
 17%|█▋        | 208/1200 [01:02<04:56,  3.34it/s]
 17%|█▋        | 209/1200 [01:02<04:56,  3.34it/s]
 18%|█▊        | 210/1200 [01:02<04:56,  3.34it/s]
 18%|█▊        | 211/1200 [01:03<04:55,  3.34it/s]
 18%|█▊        | 212/1200 [01:03<04:55,  3.34it/s]
 18%|█▊        | 213/1200 [01:03<04:55,  3.35it/s]
 18%|█▊        | 214/1200 [01:03<04:54,  3.35it/s]
 18%|█▊        | 215/1200 [01:04<04:54,  3.35it/s]
 18%|█▊        | 216/1200 [01:04<04:53,  3.35it/s]
 18%|█▊        | 217/1200 [01:04<04:53,  3.35it/s]
 18%|█▊        | 218/1200 [01:05<04:53,  3.35it/s]
 18%|█▊        | 219/1200 [01:05<04:53,  3.35it/s]
 18%|█▊        | 220/1200 [01:05<04:52,  3.35it/s]
 18%|█▊        | 221/1200 [01:06<04:52,  3.35it/s]
 18%|█▊        | 222/1200 [01:06<04:52,  3.35it/s]
 19%|█▊        | 223/1200 [01:06<04:51,  3.35it/s]
 19%|█▊        | 224/1200 [01:06<04:51,  3.35it/s]
 19%|█▉        | 225/1200 [01:07<04:51,  3.35it/s]
 19%|█▉        | 226/1200 [01:07<04:51,  3.35it/s]
 19%|█▉        | 227/1200 [01:07<04:50,  3.35it/s]
 19%|█▉        | 228/1200 [01:08<04:50,  3.34it/s]
 19%|█▉        | 229/1200 [01:08<04:50,  3.34it/s]
 19%|█▉        | 230/1200 [01:08<04:50,  3.34it/s]
 19%|█▉        | 231/1200 [01:09<04:50,  3.34it/s]
 19%|█▉        | 232/1200 [01:09<04:49,  3.34it/s]
 19%|█▉        | 233/1200 [01:09<04:49,  3.34it/s]
 20%|█▉        | 234/1200 [01:10<04:49,  3.34it/s]
 20%|█▉        | 235/1200 [01:10<04:48,  3.34it/s]
 20%|█▉        | 236/1200 [01:10<04:48,  3.34it/s]
 20%|█▉        | 237/1200 [01:10<04:48,  3.34it/s]
 20%|█▉        | 238/1200 [01:11<04:48,  3.34it/s]
 20%|█▉        | 239/1200 [01:11<04:47,  3.34it/s]
 20%|██        | 240/1200 [01:11<04:47,  3.34it/s]
 20%|██        | 241/1200 [01:12<04:47,  3.34it/s]
 20%|██        | 242/1200 [01:12<04:47,  3.34it/s]
 20%|██        | 243/1200 [01:12<04:46,  3.33it/s]
 20%|██        | 244/1200 [01:13<04:46,  3.33it/s]
 20%|██        | 245/1200 [01:13<04:46,  3.33it/s]
 20%|██        | 246/1200 [01:13<04:46,  3.33it/s]
 21%|██        | 247/1200 [01:14<04:45,  3.34it/s]
 21%|██        | 248/1200 [01:14<04:45,  3.34it/s]
 21%|██        | 249/1200 [01:14<04:45,  3.34it/s]
 21%|██        | 250/1200 [01:14<04:44,  3.33it/s]
 21%|██        | 251/1200 [01:15<04:44,  3.33it/s]
 21%|██        | 252/1200 [01:15<04:44,  3.33it/s]
 21%|██        | 253/1200 [01:15<04:44,  3.33it/s]
 21%|██        | 254/1200 [01:16<04:43,  3.33it/s]
 21%|██▏       | 255/1200 [01:16<04:43,  3.33it/s]
 21%|██▏       | 256/1200 [01:16<04:43,  3.33it/s]
 21%|██▏       | 257/1200 [01:17<04:42,  3.33it/s]
 22%|██▏       | 258/1200 [01:17<04:42,  3.34it/s]
 22%|██▏       | 259/1200 [01:17<04:42,  3.34it/s]
 22%|██▏       | 260/1200 [01:17<04:41,  3.34it/s]
 22%|██▏       | 261/1200 [01:18<04:41,  3.34it/s]
 22%|██▏       | 262/1200 [01:18<04:40,  3.34it/s]
 22%|██▏       | 263/1200 [01:18<04:40,  3.34it/s]
 22%|██▏       | 264/1200 [01:19<04:40,  3.34it/s]
 22%|██▏       | 265/1200 [01:19<04:39,  3.34it/s]
 22%|██▏       | 266/1200 [01:19<04:39,  3.34it/s]
 22%|██▏       | 267/1200 [01:19<04:39,  3.34it/s]
 22%|██▏       | 268/1200 [01:20<04:38,  3.34it/s]
 22%|██▏       | 269/1200 [01:20<04:38,  3.34it/s]
 22%|██▎       | 270/1200 [01:20<04:38,  3.34it/s]
 23%|██▎       | 271/1200 [01:21<04:37,  3.35it/s]
 23%|██▎       | 272/1200 [01:21<04:37,  3.35it/s]
 23%|██▎       | 273/1200 [01:21<04:36,  3.35it/s]
 23%|██▎       | 274/1200 [01:21<04:36,  3.35it/s]
 23%|██▎       | 275/1200 [01:22<04:36,  3.35it/s]
 23%|██▎       | 276/1200 [01:22<04:35,  3.35it/s]
 23%|██▎       | 277/1200 [01:22<04:35,  3.35it/s]
 23%|██▎       | 278/1200 [01:23<04:35,  3.35it/s]
 23%|██▎       | 279/1200 [01:23<04:35,  3.35it/s]
 23%|██▎       | 280/1200 [01:23<04:34,  3.35it/s]
 23%|██▎       | 281/1200 [01:23<04:34,  3.35it/s]
 24%|██▎       | 282/1200 [01:24<04:34,  3.35it/s]
 24%|██▎       | 283/1200 [01:24<04:33,  3.35it/s]
 24%|██▎       | 284/1200 [01:24<04:33,  3.35it/s]
 24%|██▍       | 285/1200 [01:25<04:33,  3.35it/s]
 24%|██▍       | 286/1200 [01:25<04:32,  3.35it/s]
 24%|██▍       | 287/1200 [01:25<04:32,  3.35it/s]
 24%|██▍       | 288/1200 [01:25<04:32,  3.35it/s]
 24%|██▍       | 289/1200 [01:26<04:31,  3.35it/s]
 24%|██▍       | 290/1200 [01:26<04:31,  3.35it/s]
 24%|██▍       | 291/1200 [01:26<04:30,  3.36it/s]
 24%|██▍       | 292/1200 [01:27<04:30,  3.36it/s]
 24%|██▍       | 293/1200 [01:27<04:30,  3.35it/s]
 24%|██▍       | 294/1200 [01:27<04:30,  3.35it/s]
 25%|██▍       | 295/1200 [01:27<04:29,  3.36it/s]
 25%|██▍       | 296/1200 [01:28<04:29,  3.35it/s]
 25%|██▍       | 297/1200 [01:28<04:29,  3.36it/s]
 25%|██▍       | 298/1200 [01:28<04:28,  3.36it/s]
 25%|██▍       | 299/1200 [01:29<04:28,  3.36it/s]
 25%|██▌       | 300/1200 [01:29<04:28,  3.36it/s]
 25%|██▌       | 301/1200 [01:29<04:27,  3.36it/s]
 25%|██▌       | 302/1200 [01:29<04:27,  3.36it/s]
 25%|██▌       | 303/1200 [01:30<04:26,  3.36it/s]
 25%|██▌       | 304/1200 [01:30<04:26,  3.36it/s]
 25%|██▌       | 305/1200 [01:30<04:26,  3.36it/s]
 26%|██▌       | 306/1200 [01:30<04:25,  3.36it/s]
 26%|██▌       | 307/1200 [01:31<04:25,  3.36it/s]
 26%|██▌       | 308/1200 [01:31<04:25,  3.37it/s]
 26%|██▌       | 309/1200 [01:31<04:24,  3.37it/s]
 26%|██▌       | 310/1200 [01:32<04:24,  3.37it/s]
 26%|██▌       | 311/1200 [01:32<04:23,  3.37it/s]
 26%|██▌       | 312/1200 [01:32<04:23,  3.37it/s]
 26%|██▌       | 313/1200 [01:32<04:23,  3.37it/s]
 26%|██▌       | 314/1200 [01:33<04:22,  3.37it/s]
 26%|██▋       | 315/1200 [01:33<04:22,  3.37it/s]
 26%|██▋       | 316/1200 [01:33<04:22,  3.37it/s]
 26%|██▋       | 317/1200 [01:33<04:21,  3.37it/s]
 26%|██▋       | 318/1200 [01:34<04:21,  3.37it/s]
 27%|██▋       | 319/1200 [01:34<04:21,  3.37it/s]
 27%|██▋       | 320/1200 [01:34<04:20,  3.38it/s]
 27%|██▋       | 321/1200 [01:35<04:20,  3.38it/s]
 27%|██▋       | 322/1200 [01:35<04:20,  3.38it/s]
 27%|██▋       | 323/1200 [01:35<04:19,  3.38it/s]
 27%|██▋       | 324/1200 [01:35<04:19,  3.38it/s]
 27%|██▋       | 325/1200 [01:36<04:19,  3.38it/s]
 27%|██▋       | 326/1200 [01:36<04:18,  3.38it/s]
 27%|██▋       | 327/1200 [01:36<04:18,  3.38it/s]
 27%|██▋       | 328/1200 [01:37<04:17,  3.38it/s]
 27%|██▋       | 329/1200 [01:37<04:17,  3.38it/s]
 28%|██▊       | 330/1200 [01:37<04:17,  3.38it/s]
 28%|██▊       | 331/1200 [01:37<04:16,  3.38it/s]
 28%|██▊       | 332/1200 [01:38<04:16,  3.38it/s]
 28%|██▊       | 333/1200 [01:38<04:16,  3.38it/s]
 28%|██▊       | 334/1200 [01:38<04:15,  3.38it/s]
 28%|██▊       | 335/1200 [01:38<04:15,  3.38it/s]
 28%|██▊       | 336/1200 [01:39<04:15,  3.38it/s]
 28%|██▊       | 337/1200 [01:39<04:15,  3.38it/s]
 28%|██▊       | 338/1200 [01:39<04:14,  3.38it/s]
 28%|██▊       | 339/1200 [01:40<04:14,  3.38it/s]
 28%|██▊       | 340/1200 [01:40<04:14,  3.38it/s]
 28%|██▊       | 341/1200 [01:40<04:13,  3.38it/s]
 28%|██▊       | 342/1200 [01:41<04:13,  3.38it/s]
 29%|██▊       | 343/1200 [01:41<04:13,  3.38it/s]
 29%|██▊       | 344/1200 [01:41<04:12,  3.38it/s]
 29%|██▉       | 345/1200 [01:41<04:12,  3.38it/s]
 29%|██▉       | 346/1200 [01:42<04:12,  3.38it/s]
 29%|██▉       | 347/1200 [01:42<04:11,  3.39it/s]
 29%|██▉       | 348/1200 [01:42<04:11,  3.39it/s]
 29%|██▉       | 349/1200 [01:43<04:11,  3.39it/s]
 29%|██▉       | 350/1200 [01:43<04:10,  3.39it/s]
 29%|██▉       | 351/1200 [01:43<04:10,  3.39it/s]
 29%|██▉       | 352/1200 [01:43<04:10,  3.39it/s]
 29%|██▉       | 353/1200 [01:44<04:10,  3.39it/s]
 30%|██▉       | 354/1200 [01:44<04:09,  3.39it/s]
 30%|██▉       | 355/1200 [01:44<04:09,  3.39it/s]
 30%|██▉       | 356/1200 [01:45<04:09,  3.39it/s]
 30%|██▉       | 357/1200 [01:45<04:08,  3.39it/s]
 30%|██▉       | 358/1200 [01:45<04:08,  3.39it/s]
 30%|██▉       | 359/1200 [01:45<04:08,  3.39it/s]
 30%|███       | 360/1200 [01:46<04:08,  3.39it/s]
 30%|███       | 361/1200 [01:46<04:07,  3.38it/s]
 30%|███       | 362/1200 [01:46<04:07,  3.38it/s]
 30%|███       | 363/1200 [01:47<04:07,  3.38it/s]
 30%|███       | 364/1200 [01:47<04:07,  3.38it/s]
 30%|███       | 365/1200 [01:47<04:06,  3.38it/s]
 30%|███       | 366/1200 [01:48<04:06,  3.38it/s]
 31%|███       | 367/1200 [01:48<04:06,  3.38it/s]
 31%|███       | 368/1200 [01:48<04:06,  3.38it/s]
 31%|███       | 369/1200 [01:49<04:05,  3.38it/s]
 31%|███       | 370/1200 [01:49<04:05,  3.38it/s]
 31%|███       | 371/1200 [01:49<04:05,  3.38it/s]
 31%|███       | 372/1200 [01:50<04:05,  3.38it/s]
 31%|███       | 373/1200 [01:50<04:04,  3.38it/s]
 31%|███       | 374/1200 [01:50<04:04,  3.37it/s]
 31%|███▏      | 375/1200 [01:51<04:04,  3.37it/s]
 31%|███▏      | 376/1200 [01:51<04:04,  3.37it/s]
 31%|███▏      | 377/1200 [01:51<04:04,  3.37it/s]
 32%|███▏      | 378/1200 [01:52<04:04,  3.37it/s]
 32%|███▏      | 379/1200 [01:52<04:04,  3.36it/s]
 32%|███▏      | 380/1200 [01:52<04:03,  3.36it/s]
 32%|███▏      | 381/1200 [01:53<04:03,  3.36it/s]
 32%|███▏      | 382/1200 [01:53<04:03,  3.35it/s]
 32%|███▏      | 383/1200 [01:54<04:03,  3.35it/s]
 32%|███▏      | 384/1200 [01:54<04:03,  3.35it/s]
 32%|███▏      | 385/1200 [01:55<04:03,  3.35it/s]
 32%|███▏      | 386/1200 [01:55<04:03,  3.34it/s]
 32%|███▏      | 387/1200 [01:55<04:03,  3.34it/s]
 32%|███▏      | 388/1200 [01:56<04:03,  3.34it/s]
 32%|███▏      | 389/1200 [01:56<04:03,  3.33it/s]
 32%|███▎      | 390/1200 [01:57<04:03,  3.32it/s]
 33%|███▎      | 391/1200 [01:57<04:03,  3.32it/s]
 33%|███▎      | 392/1200 [01:58<04:03,  3.31it/s]
 33%|███▎      | 393/1200 [01:58<04:03,  3.31it/s]
 33%|███▎      | 394/1200 [01:59<04:03,  3.30it/s]
 33%|███▎      | 395/1200 [01:59<04:03,  3.30it/s]
 33%|███▎      | 396/1200 [02:00<04:03,  3.30it/s]
 33%|███▎      | 397/1200 [02:00<04:03,  3.30it/s]
 33%|███▎      | 398/1200 [02:00<04:03,  3.30it/s]
 33%|███▎      | 399/1200 [02:01<04:02,  3.30it/s]
 33%|███▎      | 400/1200 [02:01<04:02,  3.30it/s]
 33%|███▎      | 401/1200 [02:01<04:02,  3.29it/s]
 34%|███▎      | 402/1200 [02:02<04:02,  3.29it/s]
 34%|███▎      | 403/1200 [02:02<04:02,  3.29it/s]
 34%|███▎      | 404/1200 [02:02<04:01,  3.29it/s]
 34%|███▍      | 405/1200 [02:03<04:01,  3.29it/s]
 34%|███▍      | 406/1200 [02:03<04:01,  3.29it/s]
 34%|███▍      | 407/1200 [02:03<04:01,  3.29it/s]
 34%|███▍      | 408/1200 [02:04<04:01,  3.29it/s]
 34%|███▍      | 409/1200 [02:04<04:00,  3.28it/s]
 34%|███▍      | 410/1200 [02:04<04:00,  3.28it/s]
 34%|███▍      | 411/1200 [02:05<04:00,  3.28it/s]
 34%|███▍      | 412/1200 [02:05<04:00,  3.28it/s]
 34%|███▍      | 413/1200 [02:06<04:00,  3.28it/s]
 34%|███▍      | 414/1200 [02:06<03:59,  3.28it/s]
 35%|███▍      | 415/1200 [02:06<03:59,  3.27it/s]
 35%|███▍      | 416/1200 [02:07<03:59,  3.27it/s]
 35%|███▍      | 417/1200 [02:07<03:59,  3.27it/s]
 35%|███▍      | 418/1200 [02:07<03:58,  3.27it/s]
 35%|███▍      | 419/1200 [02:08<03:58,  3.27it/s]
 35%|███▌      | 420/1200 [02:08<03:58,  3.27it/s]
 35%|███▌      | 421/1200 [02:08<03:58,  3.27it/s]
 35%|███▌      | 422/1200 [02:08<03:57,  3.27it/s]
 35%|███▌      | 423/1200 [02:09<03:57,  3.27it/s]
 35%|███▌      | 424/1200 [02:09<03:57,  3.27it/s]
 35%|███▌      | 425/1200 [02:09<03:56,  3.27it/s]
 36%|███▌      | 426/1200 [02:10<03:56,  3.27it/s]
 36%|███▌      | 427/1200 [02:10<03:56,  3.27it/s]
 36%|███▌      | 428/1200 [02:10<03:55,  3.28it/s]
 36%|███▌      | 429/1200 [02:11<03:55,  3.27it/s]
 36%|███▌      | 430/1200 [02:11<03:55,  3.27it/s]
 36%|███▌      | 431/1200 [02:11<03:54,  3.27it/s]
 36%|███▌      | 432/1200 [02:11<03:54,  3.28it/s]
 36%|███▌      | 433/1200 [02:12<03:54,  3.28it/s]
 36%|███▌      | 434/1200 [02:12<03:53,  3.28it/s]
 36%|███▋      | 435/1200 [02:12<03:53,  3.28it/s]
 36%|███▋      | 436/1200 [02:13<03:53,  3.27it/s]
 36%|███▋      | 437/1200 [02:13<03:53,  3.27it/s]
 36%|███▋      | 438/1200 [02:14<03:53,  3.26it/s]
 37%|███▋      | 439/1200 [02:14<03:53,  3.26it/s]
 37%|███▋      | 440/1200 [02:15<03:53,  3.26it/s]
 37%|███▋      | 441/1200 [02:15<03:52,  3.26it/s]
 37%|███▋      | 442/1200 [02:15<03:52,  3.26it/s]
 37%|███▋      | 443/1200 [02:16<03:52,  3.26it/s]
 37%|███▋      | 444/1200 [02:16<03:52,  3.26it/s]
 37%|███▋      | 445/1200 [02:16<03:51,  3.26it/s]
 37%|███▋      | 446/1200 [02:17<03:51,  3.26it/s]
 37%|███▋      | 447/1200 [02:17<03:51,  3.25it/s]
 37%|███▋      | 448/1200 [02:17<03:51,  3.25it/s]
 37%|███▋      | 449/1200 [02:18<03:50,  3.25it/s]
 38%|███▊      | 450/1200 [02:18<03:50,  3.25it/s]
 38%|███▊      | 451/1200 [02:18<03:50,  3.25it/s]
 38%|███▊      | 452/1200 [02:19<03:50,  3.25it/s]
 38%|███▊      | 453/1200 [02:19<03:49,  3.25it/s]
 38%|███▊      | 454/1200 [02:19<03:49,  3.25it/s]
 38%|███▊      | 455/1200 [02:19<03:49,  3.25it/s]
 38%|███▊      | 456/1200 [02:20<03:48,  3.25it/s]
 38%|███▊      | 457/1200 [02:20<03:48,  3.25it/s]
 38%|███▊      | 458/1200 [02:20<03:48,  3.25it/s]
 38%|███▊      | 459/1200 [02:21<03:47,  3.25it/s]
 38%|███▊      | 460/1200 [02:21<03:47,  3.25it/s]
 38%|███▊      | 461/1200 [02:21<03:47,  3.25it/s]
 38%|███▊      | 462/1200 [02:21<03:46,  3.25it/s]
 39%|███▊      | 463/1200 [02:22<03:46,  3.25it/s]
 39%|███▊      | 464/1200 [02:22<03:46,  3.26it/s]
 39%|███▉      | 465/1200 [02:22<03:45,  3.26it/s]
 39%|███▉      | 466/1200 [02:23<03:45,  3.26it/s]
 39%|███▉      | 467/1200 [02:23<03:45,  3.26it/s]
 39%|███▉      | 468/1200 [02:23<03:44,  3.26it/s]
 39%|███▉      | 469/1200 [02:24<03:44,  3.26it/s]
 39%|███▉      | 470/1200 [02:24<03:44,  3.26it/s]
 39%|███▉      | 471/1200 [02:24<03:43,  3.26it/s]
 39%|███▉      | 472/1200 [02:24<03:43,  3.26it/s]
 39%|███▉      | 473/1200 [02:25<03:43,  3.26it/s]
 40%|███▉      | 474/1200 [02:25<03:42,  3.26it/s]
 40%|███▉      | 475/1200 [02:25<03:42,  3.26it/s]
 40%|███▉      | 476/1200 [02:26<03:42,  3.26it/s]
 40%|███▉      | 477/1200 [02:26<03:41,  3.26it/s]
 40%|███▉      | 478/1200 [02:26<03:41,  3.26it/s]
 40%|███▉      | 479/1200 [02:27<03:41,  3.26it/s]
 40%|████      | 480/1200 [02:27<03:41,  3.26it/s]
 40%|████      | 481/1200 [02:27<03:40,  3.26it/s]
 40%|████      | 482/1200 [02:27<03:40,  3.26it/s]
 40%|████      | 483/1200 [02:28<03:40,  3.26it/s]
 40%|████      | 484/1200 [02:28<03:39,  3.26it/s]
 40%|████      | 485/1200 [02:28<03:39,  3.26it/s]
 40%|████      | 486/1200 [02:29<03:39,  3.26it/s]
 41%|████      | 487/1200 [02:29<03:38,  3.26it/s]
 41%|████      | 488/1200 [02:29<03:38,  3.26it/s]
 41%|████      | 489/1200 [02:30<03:38,  3.26it/s]
 41%|████      | 490/1200 [02:30<03:37,  3.26it/s]
 41%|████      | 491/1200 [02:30<03:37,  3.26it/s]
 41%|████      | 492/1200 [02:30<03:37,  3.26it/s]
 41%|████      | 493/1200 [02:31<03:36,  3.26it/s]
 41%|████      | 494/1200 [02:31<03:36,  3.26it/s]
 41%|████▏     | 495/1200 [02:31<03:36,  3.26it/s]
 41%|████▏     | 496/1200 [02:32<03:35,  3.26it/s]
 41%|████▏     | 497/1200 [02:32<03:35,  3.26it/s]
 42%|████▏     | 498/1200 [02:32<03:35,  3.26it/s]
 42%|████▏     | 499/1200 [02:32<03:34,  3.26it/s]
 42%|████▏     | 500/1200 [02:33<03:34,  3.26it/s]
 42%|████▏     | 501/1200 [02:33<03:34,  3.26it/s]
 42%|████▏     | 502/1200 [02:33<03:34,  3.26it/s]
 42%|████▏     | 503/1200 [02:34<03:33,  3.26it/s]
 42%|████▏     | 504/1200 [02:34<03:33,  3.26it/s]
 42%|████▏     | 505/1200 [02:34<03:33,  3.26it/s]
 42%|████▏     | 506/1200 [02:35<03:32,  3.26it/s]
 42%|████▏     | 507/1200 [02:35<03:32,  3.26it/s]
 42%|████▏     | 508/1200 [02:35<03:32,  3.26it/s]
 42%|████▏     | 509/1200 [02:36<03:31,  3.26it/s]
 42%|████▎     | 510/1200 [02:36<03:31,  3.26it/s]
 43%|████▎     | 511/1200 [02:36<03:31,  3.26it/s]
 43%|████▎     | 512/1200 [02:36<03:30,  3.26it/s]
 43%|████▎     | 513/1200 [02:37<03:30,  3.26it/s]
 43%|████▎     | 514/1200 [02:37<03:30,  3.26it/s]
 43%|████▎     | 515/1200 [02:37<03:29,  3.26it/s]
 43%|████▎     | 516/1200 [02:38<03:29,  3.26it/s]
 43%|████▎     | 517/1200 [02:38<03:29,  3.26it/s]
 43%|████▎     | 518/1200 [02:38<03:29,  3.26it/s]
 43%|████▎     | 519/1200 [02:39<03:28,  3.26it/s]
 43%|████▎     | 520/1200 [02:39<03:28,  3.26it/s]
 43%|████▎     | 521/1200 [02:39<03:28,  3.26it/s]
 44%|████▎     | 522/1200 [02:40<03:27,  3.26it/s]
 44%|████▎     | 523/1200 [02:40<03:27,  3.26it/s]
 44%|████▎     | 524/1200 [02:40<03:27,  3.26it/s]
 44%|████▍     | 525/1200 [02:40<03:26,  3.26it/s]
 44%|████▍     | 526/1200 [02:41<03:26,  3.26it/s]
 44%|████▍     | 527/1200 [02:41<03:26,  3.26it/s]
 44%|████▍     | 528/1200 [02:41<03:25,  3.26it/s]
 44%|████▍     | 529/1200 [02:42<03:25,  3.26it/s]
 44%|████▍     | 530/1200 [02:42<03:25,  3.26it/s]
 44%|████▍     | 531/1200 [02:42<03:24,  3.26it/s]
 44%|████▍     | 532/1200 [02:43<03:24,  3.26it/s]
 44%|████▍     | 533/1200 [02:43<03:24,  3.26it/s]
 44%|████▍     | 534/1200 [02:43<03:24,  3.26it/s]
 45%|████▍     | 535/1200 [02:43<03:23,  3.26it/s]
 45%|████▍     | 536/1200 [02:44<03:23,  3.26it/s]
 45%|████▍     | 537/1200 [02:44<03:23,  3.26it/s]
 45%|████▍     | 538/1200 [02:44<03:22,  3.26it/s]
 45%|████▍     | 539/1200 [02:45<03:22,  3.26it/s]
 45%|████▌     | 540/1200 [02:45<03:22,  3.27it/s]
 45%|████▌     | 541/1200 [02:45<03:21,  3.27it/s]
 45%|████▌     | 542/1200 [02:45<03:21,  3.27it/s]
 45%|████▌     | 543/1200 [02:46<03:21,  3.27it/s]
 45%|████▌     | 544/1200 [02:46<03:20,  3.27it/s]
 45%|████▌     | 545/1200 [02:46<03:20,  3.27it/s]
 46%|████▌     | 546/1200 [02:47<03:20,  3.27it/s]
 46%|████▌     | 547/1200 [02:47<03:19,  3.27it/s]
 46%|████▌     | 548/1200 [02:47<03:19,  3.27it/s]
 46%|████▌     | 549/1200 [02:48<03:19,  3.27it/s]
 46%|████▌     | 550/1200 [02:48<03:18,  3.27it/s]
 46%|████▌     | 551/1200 [02:48<03:18,  3.27it/s]
 46%|████▌     | 552/1200 [02:48<03:18,  3.27it/s]
 46%|████▌     | 553/1200 [02:49<03:17,  3.27it/s]
 46%|████▌     | 554/1200 [02:49<03:17,  3.27it/s]
 46%|████▋     | 555/1200 [02:49<03:17,  3.27it/s]
 46%|████▋     | 556/1200 [02:49<03:16,  3.27it/s]
 46%|████▋     | 557/1200 [02:50<03:16,  3.27it/s]
 46%|████▋     | 558/1200 [02:50<03:16,  3.27it/s]
 47%|████▋     | 559/1200 [02:50<03:15,  3.27it/s]
 47%|████▋     | 560/1200 [02:51<03:15,  3.27it/s]
 47%|████▋     | 561/1200 [02:51<03:15,  3.27it/s]
 47%|████▋     | 562/1200 [02:51<03:14,  3.27it/s]
 47%|████▋     | 563/1200 [02:51<03:14,  3.27it/s]
 47%|████▋     | 564/1200 [02:52<03:14,  3.27it/s]
 47%|████▋     | 565/1200 [02:52<03:13,  3.28it/s]
 47%|████▋     | 566/1200 [02:52<03:13,  3.28it/s]
 47%|████▋     | 567/1200 [02:53<03:13,  3.28it/s]
 47%|████▋     | 568/1200 [02:53<03:12,  3.28it/s]
 47%|████▋     | 569/1200 [02:53<03:12,  3.28it/s]
 48%|████▊     | 570/1200 [02:53<03:12,  3.28it/s]
 48%|████▊     | 571/1200 [02:54<03:11,  3.28it/s]
 48%|████▊     | 572/1200 [02:54<03:11,  3.28it/s]
 48%|████▊     | 573/1200 [02:54<03:11,  3.28it/s]
 48%|████▊     | 574/1200 [02:55<03:10,  3.28it/s]
 48%|████▊     | 575/1200 [02:55<03:10,  3.28it/s]
 48%|████▊     | 576/1200 [02:55<03:10,  3.28it/s]
 48%|████▊     | 577/1200 [02:55<03:09,  3.28it/s]
 48%|████▊     | 578/1200 [02:56<03:09,  3.28it/s]
 48%|████▊     | 579/1200 [02:56<03:09,  3.28it/s]
 48%|████▊     | 580/1200 [02:56<03:08,  3.28it/s]
 48%|████▊     | 581/1200 [02:57<03:08,  3.28it/s]
 48%|████▊     | 582/1200 [02:57<03:08,  3.28it/s]
 49%|████▊     | 583/1200 [02:57<03:07,  3.28it/s]
 49%|████▊     | 584/1200 [02:57<03:07,  3.28it/s]
 49%|████▉     | 585/1200 [02:58<03:07,  3.28it/s]
 49%|████▉     | 586/1200 [02:58<03:06,  3.29it/s]
 49%|████▉     | 587/1200 [02:58<03:06,  3.29it/s]
 49%|████▉     | 588/1200 [02:58<03:06,  3.29it/s]
 49%|████▉     | 589/1200 [02:59<03:05,  3.29it/s]
 49%|████▉     | 590/1200 [02:59<03:05,  3.29it/s]
 49%|████▉     | 591/1200 [02:59<03:05,  3.29it/s]
 49%|████▉     | 592/1200 [02:59<03:04,  3.29it/s]
 49%|████▉     | 593/1200 [03:00<03:04,  3.29it/s]
 50%|████▉     | 594/1200 [03:00<03:04,  3.29it/s]
 50%|████▉     | 595/1200 [03:00<03:03,  3.29it/s]
 50%|████▉     | 596/1200 [03:01<03:03,  3.29it/s]
 50%|████▉     | 597/1200 [03:01<03:03,  3.29it/s]
 50%|████▉     | 598/1200 [03:01<03:02,  3.29it/s]
 50%|████▉     | 599/1200 [03:02<03:02,  3.29it/s]
 50%|█████     | 600/1200 [03:02<03:02,  3.29it/s]
 50%|█████     | 601/1200 [03:02<03:01,  3.29it/s]
 50%|█████     | 602/1200 [03:02<03:01,  3.29it/s]
 50%|█████     | 603/1200 [03:03<03:01,  3.29it/s]
 50%|█████     | 604/1200 [03:03<03:00,  3.29it/s]
 50%|█████     | 605/1200 [03:03<03:00,  3.29it/s]
 50%|█████     | 606/1200 [03:03<03:00,  3.29it/s]
 51%|█████     | 607/1200 [03:04<03:00,  3.29it/s]
 51%|█████     | 608/1200 [03:04<02:59,  3.29it/s]
 51%|█████     | 609/1200 [03:04<02:59,  3.29it/s]
 51%|█████     | 610/1200 [03:05<02:59,  3.30it/s]
 51%|█████     | 611/1200 [03:05<02:58,  3.30it/s]
 51%|█████     | 612/1200 [03:05<02:58,  3.30it/s]
 51%|█████     | 613/1200 [03:06<02:58,  3.30it/s]
 51%|█████     | 614/1200 [03:06<02:57,  3.29it/s]
 51%|█████▏    | 615/1200 [03:06<02:57,  3.29it/s]
 51%|█████▏    | 616/1200 [03:07<02:57,  3.29it/s]
 51%|█████▏    | 617/1200 [03:07<02:56,  3.29it/s]
 52%|█████▏    | 618/1200 [03:07<02:56,  3.29it/s]
 52%|█████▏    | 619/1200 [03:08<02:56,  3.29it/s]
 52%|█████▏    | 620/1200 [03:08<02:56,  3.29it/s]
 52%|█████▏    | 621/1200 [03:08<02:55,  3.29it/s]
 52%|█████▏    | 622/1200 [03:09<02:55,  3.29it/s]
 52%|█████▏    | 623/1200 [03:09<02:55,  3.29it/s]
 52%|█████▏    | 624/1200 [03:09<02:55,  3.29it/s]
 52%|█████▏    | 625/1200 [03:09<02:54,  3.29it/s]
 52%|█████▏    | 626/1200 [03:10<02:54,  3.29it/s]
 52%|█████▏    | 627/1200 [03:10<02:54,  3.29it/s]
 52%|█████▏    | 628/1200 [03:10<02:53,  3.29it/s]
 52%|█████▏    | 629/1200 [03:11<02:53,  3.29it/s]
 52%|█████▎    | 630/1200 [03:11<02:53,  3.29it/s]
 53%|█████▎    | 631/1200 [03:11<02:52,  3.29it/s]
 53%|█████▎    | 632/1200 [03:11<02:52,  3.29it/s]
 53%|█████▎    | 633/1200 [03:12<02:52,  3.29it/s]
 53%|█████▎    | 634/1200 [03:12<02:51,  3.29it/s]
 53%|█████▎    | 635/1200 [03:12<02:51,  3.29it/s]
 53%|█████▎    | 636/1200 [03:13<02:51,  3.29it/s]
 53%|█████▎    | 637/1200 [03:13<02:50,  3.29it/s]
 53%|█████▎    | 638/1200 [03:13<02:50,  3.29it/s]
 53%|█████▎    | 639/1200 [03:13<02:50,  3.29it/s]
 53%|█████▎    | 640/1200 [03:14<02:49,  3.30it/s]
 53%|█████▎    | 641/1200 [03:14<02:49,  3.30it/s]
 54%|█████▎    | 642/1200 [03:14<02:49,  3.29it/s]
 54%|█████▎    | 643/1200 [03:15<02:49,  3.29it/s]
 54%|█████▎    | 644/1200 [03:15<02:48,  3.29it/s]
 54%|█████▍    | 645/1200 [03:15<02:48,  3.29it/s]
 54%|█████▍    | 646/1200 [03:16<02:48,  3.29it/s]
 54%|█████▍    | 647/1200 [03:16<02:47,  3.29it/s]
 54%|█████▍    | 648/1200 [03:16<02:47,  3.29it/s]
 54%|█████▍    | 649/1200 [03:17<02:47,  3.29it/s]
 54%|█████▍    | 650/1200 [03:17<02:47,  3.29it/s]
 54%|█████▍    | 651/1200 [03:17<02:46,  3.29it/s]
 54%|█████▍    | 652/1200 [03:18<02:46,  3.29it/s]
 54%|█████▍    | 653/1200 [03:18<02:46,  3.29it/s]
 55%|█████▍    | 654/1200 [03:18<02:45,  3.29it/s]
 55%|█████▍    | 655/1200 [03:19<02:45,  3.29it/s]
 55%|█████▍    | 656/1200 [03:19<02:45,  3.29it/s]
 55%|█████▍    | 657/1200 [03:20<02:45,  3.28it/s]
 55%|█████▍    | 658/1200 [03:20<02:45,  3.28it/s]
 55%|█████▍    | 659/1200 [03:20<02:44,  3.28it/s]
 55%|█████▌    | 660/1200 [03:21<02:44,  3.28it/s]
 55%|█████▌    | 661/1200 [03:21<02:44,  3.28it/s]
 55%|█████▌    | 662/1200 [03:21<02:43,  3.28it/s]
 55%|█████▌    | 663/1200 [03:22<02:43,  3.28it/s]
 55%|█████▌    | 664/1200 [03:22<02:43,  3.28it/s]
 55%|█████▌    | 665/1200 [03:22<02:43,  3.28it/s]
 56%|█████▌    | 666/1200 [03:23<02:42,  3.28it/s]
 56%|█████▌    | 667/1200 [03:23<02:42,  3.28it/s]
 56%|█████▌    | 668/1200 [03:23<02:42,  3.28it/s]
 56%|█████▌    | 669/1200 [03:24<02:42,  3.28it/s]
 56%|█████▌    | 670/1200 [03:24<02:41,  3.28it/s]
 56%|█████▌    | 671/1200 [03:24<02:41,  3.28it/s]
 56%|█████▌    | 672/1200 [03:25<02:41,  3.28it/s]
 56%|█████▌    | 673/1200 [03:25<02:40,  3.28it/s]
 56%|█████▌    | 674/1200 [03:25<02:40,  3.28it/s]
 56%|█████▋    | 675/1200 [03:26<02:40,  3.28it/s]
 56%|█████▋    | 676/1200 [03:26<02:39,  3.28it/s]
 56%|█████▋    | 677/1200 [03:26<02:39,  3.28it/s]
 56%|█████▋    | 678/1200 [03:26<02:39,  3.28it/s]
 57%|█████▋    | 679/1200 [03:27<02:39,  3.28it/s]
 57%|█████▋    | 680/1200 [03:27<02:38,  3.28it/s]
 57%|█████▋    | 681/1200 [03:27<02:38,  3.28it/s]
 57%|█████▋    | 682/1200 [03:28<02:38,  3.28it/s]
 57%|█████▋    | 683/1200 [03:28<02:37,  3.28it/s]
 57%|█████▋    | 684/1200 [03:28<02:37,  3.28it/s]
 57%|█████▋    | 685/1200 [03:29<02:37,  3.28it/s]
 57%|█████▋    | 686/1200 [03:29<02:36,  3.28it/s]
 57%|█████▋    | 687/1200 [03:29<02:36,  3.28it/s]
 57%|█████▋    | 688/1200 [03:29<02:36,  3.28it/s]
 57%|█████▋    | 689/1200 [03:30<02:35,  3.28it/s]
 57%|█████▊    | 690/1200 [03:30<02:35,  3.28it/s]
 58%|█████▊    | 691/1200 [03:30<02:35,  3.28it/s]
 58%|█████▊    | 692/1200 [03:31<02:34,  3.28it/s]
 58%|█████▊    | 693/1200 [03:31<02:34,  3.28it/s]
 58%|█████▊    | 694/1200 [03:31<02:34,  3.28it/s]
 58%|█████▊    | 695/1200 [03:31<02:34,  3.28it/s]
 58%|█████▊    | 696/1200 [03:32<02:33,  3.28it/s]
 58%|█████▊    | 697/1200 [03:32<02:33,  3.28it/s]
 58%|█████▊    | 698/1200 [03:32<02:33,  3.28it/s]
 58%|█████▊    | 699/1200 [03:33<02:32,  3.28it/s]
 58%|█████▊    | 700/1200 [03:33<02:32,  3.28it/s]
 58%|█████▊    | 701/1200 [03:33<02:32,  3.28it/s]
 58%|█████▊    | 702/1200 [03:34<02:31,  3.28it/s]
 59%|█████▊    | 703/1200 [03:34<02:31,  3.28it/s]
 59%|█████▊    | 704/1200 [03:34<02:31,  3.28it/s]
 59%|█████▉    | 705/1200 [03:34<02:30,  3.28it/s]
 59%|█████▉    | 706/1200 [03:35<02:30,  3.28it/s]
 59%|█████▉    | 707/1200 [03:35<02:30,  3.28it/s]
 59%|█████▉    | 708/1200 [03:35<02:29,  3.28it/s]
 59%|█████▉    | 709/1200 [03:36<02:29,  3.28it/s]
 59%|█████▉    | 710/1200 [03:36<02:29,  3.28it/s]
 59%|█████▉    | 711/1200 [03:36<02:29,  3.28it/s]
 59%|█████▉    | 712/1200 [03:36<02:28,  3.28it/s]
 59%|█████▉    | 713/1200 [03:37<02:28,  3.28it/s]
 60%|█████▉    | 714/1200 [03:37<02:28,  3.28it/s]
 60%|█████▉    | 715/1200 [03:37<02:27,  3.28it/s]
 60%|█████▉    | 716/1200 [03:38<02:27,  3.28it/s]
 60%|█████▉    | 717/1200 [03:38<02:27,  3.28it/s]
 60%|█████▉    | 718/1200 [03:38<02:26,  3.28it/s]
 60%|█████▉    | 719/1200 [03:38<02:26,  3.28it/s]
 60%|██████    | 720/1200 [03:39<02:26,  3.28it/s]
 60%|██████    | 721/1200 [03:39<02:25,  3.28it/s]
 60%|██████    | 722/1200 [03:39<02:25,  3.28it/s]
 60%|██████    | 723/1200 [03:40<02:25,  3.28it/s]
 60%|██████    | 724/1200 [03:40<02:24,  3.28it/s]
 60%|██████    | 725/1200 [03:40<02:24,  3.28it/s]
 60%|██████    | 726/1200 [03:41<02:24,  3.28it/s]
 61%|██████    | 727/1200 [03:41<02:24,  3.28it/s]
 61%|██████    | 728/1200 [03:41<02:23,  3.28it/s]
 61%|██████    | 729/1200 [03:42<02:23,  3.28it/s]
 61%|██████    | 730/1200 [03:42<02:23,  3.28it/s]
 61%|██████    | 731/1200 [03:42<02:22,  3.28it/s]
 61%|██████    | 732/1200 [03:42<02:22,  3.28it/s]
 61%|██████    | 733/1200 [03:43<02:22,  3.28it/s]
 61%|██████    | 734/1200 [03:43<02:21,  3.28it/s]
 61%|██████▏   | 735/1200 [03:43<02:21,  3.28it/s]
 61%|██████▏   | 736/1200 [03:44<02:21,  3.28it/s]
 61%|██████▏   | 737/1200 [03:44<02:20,  3.28it/s]
 62%|██████▏   | 738/1200 [03:44<02:20,  3.28it/s]
 62%|██████▏   | 739/1200 [03:45<02:20,  3.28it/s]
 62%|██████▏   | 740/1200 [03:45<02:20,  3.28it/s]
 62%|██████▏   | 741/1200 [03:45<02:19,  3.28it/s]
 62%|██████▏   | 742/1200 [03:45<02:19,  3.28it/s]
 62%|██████▏   | 743/1200 [03:46<02:19,  3.28it/s]
 62%|██████▏   | 744/1200 [03:46<02:18,  3.28it/s]
 62%|██████▏   | 745/1200 [03:46<02:18,  3.28it/s]
 62%|██████▏   | 746/1200 [03:47<02:18,  3.28it/s]
 62%|██████▏   | 747/1200 [03:47<02:17,  3.28it/s]
 62%|██████▏   | 748/1200 [03:47<02:17,  3.28it/s]
 62%|██████▏   | 749/1200 [03:48<02:17,  3.28it/s]
 62%|██████▎   | 750/1200 [03:48<02:17,  3.28it/s]
 63%|██████▎   | 751/1200 [03:48<02:16,  3.28it/s]
 63%|██████▎   | 752/1200 [03:49<02:16,  3.28it/s]
 63%|██████▎   | 753/1200 [03:49<02:16,  3.28it/s]
 63%|██████▎   | 754/1200 [03:49<02:15,  3.28it/s]
 63%|██████▎   | 755/1200 [03:50<02:15,  3.28it/s]
 63%|██████▎   | 756/1200 [03:50<02:15,  3.28it/s]
 63%|██████▎   | 757/1200 [03:50<02:14,  3.28it/s]
 63%|██████▎   | 758/1200 [03:50<02:14,  3.28it/s]
 63%|██████▎   | 759/1200 [03:51<02:14,  3.28it/s]
 63%|██████▎   | 760/1200 [03:51<02:14,  3.28it/s]
 63%|██████▎   | 761/1200 [03:51<02:13,  3.28it/s]
 64%|██████▎   | 762/1200 [03:52<02:13,  3.28it/s]
 64%|██████▎   | 763/1200 [03:52<02:13,  3.28it/s]
 64%|██████▎   | 764/1200 [03:52<02:12,  3.28it/s]
 64%|██████▍   | 765/1200 [03:53<02:12,  3.28it/s]
 64%|██████▍   | 766/1200 [03:53<02:12,  3.28it/s]
 64%|██████▍   | 767/1200 [03:53<02:11,  3.28it/s]
 64%|██████▍   | 768/1200 [03:54<02:11,  3.28it/s]
 64%|██████▍   | 769/1200 [03:54<02:11,  3.28it/s]
 64%|██████▍   | 770/1200 [03:54<02:11,  3.28it/s]
 64%|██████▍   | 771/1200 [03:55<02:10,  3.28it/s]
 64%|██████▍   | 772/1200 [03:55<02:10,  3.28it/s]
 64%|██████▍   | 773/1200 [03:55<02:10,  3.28it/s]
 64%|██████▍   | 774/1200 [03:56<02:09,  3.28it/s]
 65%|██████▍   | 775/1200 [03:56<02:09,  3.28it/s]
 65%|██████▍   | 776/1200 [03:56<02:09,  3.28it/s]
 65%|██████▍   | 777/1200 [03:57<02:09,  3.28it/s]
 65%|██████▍   | 778/1200 [03:57<02:08,  3.28it/s]
 65%|██████▍   | 779/1200 [03:57<02:08,  3.28it/s]
 65%|██████▌   | 780/1200 [03:58<02:08,  3.28it/s]
 65%|██████▌   | 781/1200 [03:58<02:07,  3.28it/s]
 65%|██████▌   | 782/1200 [03:58<02:07,  3.28it/s]
 65%|██████▌   | 783/1200 [03:59<02:07,  3.28it/s]
 65%|██████▌   | 784/1200 [03:59<02:06,  3.28it/s]
 65%|██████▌   | 785/1200 [03:59<02:06,  3.28it/s]
 66%|██████▌   | 786/1200 [03:59<02:06,  3.28it/s]
 66%|██████▌   | 787/1200 [04:00<02:06,  3.28it/s]
 66%|██████▌   | 788/1200 [04:00<02:05,  3.28it/s]
 66%|██████▌   | 789/1200 [04:00<02:05,  3.28it/s]
 66%|██████▌   | 790/1200 [04:01<02:05,  3.28it/s]
 66%|██████▌   | 791/1200 [04:01<02:04,  3.28it/s]
 66%|██████▌   | 792/1200 [04:01<02:04,  3.28it/s]
 66%|██████▌   | 793/1200 [04:02<02:04,  3.28it/s]
 66%|██████▌   | 794/1200 [04:02<02:03,  3.27it/s]
 66%|██████▋   | 795/1200 [04:02<02:03,  3.27it/s]
 66%|██████▋   | 796/1200 [04:03<02:03,  3.27it/s]
 66%|██████▋   | 797/1200 [04:03<02:03,  3.27it/s]
 66%|██████▋   | 798/1200 [04:03<02:02,  3.27it/s]
 67%|██████▋   | 799/1200 [04:03<02:02,  3.27it/s]
 67%|██████▋   | 800/1200 [04:04<02:02,  3.28it/s]
 67%|██████▋   | 801/1200 [04:04<02:01,  3.28it/s]
 67%|██████▋   | 802/1200 [04:04<02:01,  3.28it/s]
 67%|██████▋   | 803/1200 [04:05<02:01,  3.28it/s]
 67%|██████▋   | 804/1200 [04:05<02:00,  3.28it/s]
 67%|██████▋   | 805/1200 [04:05<02:00,  3.28it/s]
 67%|██████▋   | 806/1200 [04:05<02:00,  3.28it/s]
 67%|██████▋   | 807/1200 [04:06<01:59,  3.28it/s]
 67%|██████▋   | 808/1200 [04:06<01:59,  3.28it/s]
 67%|██████▋   | 809/1200 [04:06<01:59,  3.28it/s]
 68%|██████▊   | 810/1200 [04:07<01:58,  3.28it/s]
 68%|██████▊   | 811/1200 [04:07<01:58,  3.28it/s]
 68%|██████▊   | 812/1200 [04:07<01:58,  3.28it/s]
 68%|██████▊   | 813/1200 [04:07<01:57,  3.28it/s]
 68%|██████▊   | 814/1200 [04:08<01:57,  3.28it/s]
 68%|██████▊   | 815/1200 [04:08<01:57,  3.28it/s]
 68%|██████▊   | 816/1200 [04:08<01:57,  3.28it/s]
 68%|██████▊   | 817/1200 [04:08<01:56,  3.28it/s]
 68%|██████▊   | 818/1200 [04:09<01:56,  3.28it/s]
 68%|██████▊   | 819/1200 [04:09<01:56,  3.28it/s]
 68%|██████▊   | 820/1200 [04:09<01:55,  3.28it/s]
 68%|██████▊   | 821/1200 [04:10<01:55,  3.28it/s]
 68%|██████▊   | 822/1200 [04:10<01:55,  3.28it/s]
 69%|██████▊   | 823/1200 [04:10<01:54,  3.28it/s]
 69%|██████▊   | 824/1200 [04:10<01:54,  3.28it/s]
 69%|██████▉   | 825/1200 [04:11<01:54,  3.29it/s]
 69%|██████▉   | 826/1200 [04:11<01:53,  3.29it/s]
 69%|██████▉   | 827/1200 [04:11<01:53,  3.29it/s]
 69%|██████▉   | 828/1200 [04:11<01:53,  3.29it/s]
 69%|██████▉   | 829/1200 [04:12<01:52,  3.29it/s]
 69%|██████▉   | 830/1200 [04:12<01:52,  3.29it/s]
 69%|██████▉   | 831/1200 [04:12<01:52,  3.29it/s]
 69%|██████▉   | 832/1200 [04:13<01:51,  3.29it/s]
 69%|██████▉   | 833/1200 [04:13<01:51,  3.29it/s]
 70%|██████▉   | 834/1200 [04:13<01:51,  3.29it/s]
 70%|██████▉   | 835/1200 [04:14<01:51,  3.29it/s]
 70%|██████▉   | 836/1200 [04:14<01:50,  3.29it/s]
 70%|██████▉   | 837/1200 [04:14<01:50,  3.29it/s]
 70%|██████▉   | 838/1200 [04:14<01:50,  3.29it/s]
 70%|██████▉   | 839/1200 [04:15<01:49,  3.29it/s]
 70%|███████   | 840/1200 [04:15<01:49,  3.29it/s]
 70%|███████   | 841/1200 [04:15<01:49,  3.29it/s]
 70%|███████   | 842/1200 [04:15<01:48,  3.29it/s]
 70%|███████   | 843/1200 [04:16<01:48,  3.29it/s]
 70%|███████   | 844/1200 [04:16<01:48,  3.29it/s]
 70%|███████   | 845/1200 [04:16<01:47,  3.29it/s]
 70%|███████   | 846/1200 [04:17<01:47,  3.29it/s]
 71%|███████   | 847/1200 [04:17<01:47,  3.29it/s]
 71%|███████   | 848/1200 [04:17<01:46,  3.29it/s]
 71%|███████   | 849/1200 [04:18<01:46,  3.29it/s]
 71%|███████   | 850/1200 [04:18<01:46,  3.29it/s]
 71%|███████   | 851/1200 [04:18<01:46,  3.29it/s]
 71%|███████   | 852/1200 [04:18<01:45,  3.29it/s]
 71%|███████   | 853/1200 [04:19<01:45,  3.29it/s]
 71%|███████   | 854/1200 [04:19<01:45,  3.29it/s]
 71%|███████▏  | 855/1200 [04:19<01:44,  3.29it/s]
 71%|███████▏  | 856/1200 [04:20<01:44,  3.29it/s]
 71%|███████▏  | 857/1200 [04:20<01:44,  3.29it/s]
 72%|███████▏  | 858/1200 [04:20<01:43,  3.29it/s]
 72%|███████▏  | 859/1200 [04:21<01:43,  3.29it/s]
 72%|███████▏  | 860/1200 [04:21<01:43,  3.29it/s]
 72%|███████▏  | 861/1200 [04:21<01:43,  3.29it/s]
 72%|███████▏  | 862/1200 [04:22<01:42,  3.29it/s]
 72%|███████▏  | 863/1200 [04:22<01:42,  3.29it/s]
 72%|███████▏  | 864/1200 [04:22<01:42,  3.29it/s]
 72%|███████▏  | 865/1200 [04:23<01:41,  3.29it/s]
 72%|███████▏  | 866/1200 [04:23<01:41,  3.29it/s]
 72%|███████▏  | 867/1200 [04:23<01:41,  3.29it/s]
 72%|███████▏  | 868/1200 [04:24<01:41,  3.28it/s]
 72%|███████▏  | 869/1200 [04:24<01:40,  3.28it/s]
 72%|███████▎  | 870/1200 [04:24<01:40,  3.28it/s]
 73%|███████▎  | 871/1200 [04:25<01:40,  3.28it/s]
 73%|███████▎  | 872/1200 [04:25<01:39,  3.28it/s]
 73%|███████▎  | 873/1200 [04:25<01:39,  3.28it/s]
 73%|███████▎  | 874/1200 [04:26<01:39,  3.28it/s]
 73%|███████▎  | 875/1200 [04:26<01:39,  3.28it/s]
 73%|███████▎  | 876/1200 [04:27<01:38,  3.28it/s]
 73%|███████▎  | 877/1200 [04:27<01:38,  3.28it/s]
 73%|███████▎  | 878/1200 [04:27<01:38,  3.28it/s]
 73%|███████▎  | 879/1200 [04:28<01:37,  3.28it/s]
 73%|███████▎  | 880/1200 [04:28<01:37,  3.28it/s]
 73%|███████▎  | 881/1200 [04:28<01:37,  3.28it/s]
 74%|███████▎  | 882/1200 [04:29<01:37,  3.28it/s]
 74%|███████▎  | 883/1200 [04:29<01:36,  3.28it/s]
 74%|███████▎  | 884/1200 [04:29<01:36,  3.28it/s]
 74%|███████▍  | 885/1200 [04:30<01:36,  3.28it/s]
 74%|███████▍  | 886/1200 [04:30<01:35,  3.28it/s]
 74%|███████▍  | 887/1200 [04:30<01:35,  3.28it/s]
 74%|███████▍  | 888/1200 [04:31<01:35,  3.28it/s]
 74%|███████▍  | 889/1200 [04:31<01:34,  3.28it/s]
 74%|███████▍  | 890/1200 [04:31<01:34,  3.28it/s]
 74%|███████▍  | 891/1200 [04:31<01:34,  3.28it/s]
 74%|███████▍  | 892/1200 [04:32<01:34,  3.28it/s]
 74%|███████▍  | 893/1200 [04:32<01:33,  3.28it/s]
 74%|███████▍  | 894/1200 [04:32<01:33,  3.28it/s]
 75%|███████▍  | 895/1200 [04:33<01:33,  3.28it/s]
 75%|███████▍  | 896/1200 [04:33<01:32,  3.28it/s]
 75%|███████▍  | 897/1200 [04:33<01:32,  3.28it/s]
 75%|███████▍  | 898/1200 [04:34<01:32,  3.28it/s]
 75%|███████▍  | 899/1200 [04:34<01:31,  3.28it/s]
 75%|███████▌  | 900/1200 [04:34<01:31,  3.28it/s]
 75%|███████▌  | 901/1200 [04:34<01:31,  3.28it/s]
 75%|███████▌  | 902/1200 [04:35<01:30,  3.28it/s]
 75%|███████▌  | 903/1200 [04:35<01:30,  3.28it/s]
 75%|███████▌  | 904/1200 [04:35<01:30,  3.28it/s]
 75%|███████▌  | 905/1200 [04:35<01:29,  3.28it/s]
 76%|███████▌  | 906/1200 [04:36<01:29,  3.28it/s]
 76%|███████▌  | 907/1200 [04:36<01:29,  3.28it/s]
 76%|███████▌  | 908/1200 [04:36<01:28,  3.28it/s]
 76%|███████▌  | 909/1200 [04:36<01:28,  3.28it/s]
 76%|███████▌  | 910/1200 [04:37<01:28,  3.28it/s]
 76%|███████▌  | 911/1200 [04:37<01:28,  3.28it/s]
 76%|███████▌  | 912/1200 [04:37<01:27,  3.28it/s]
 76%|███████▌  | 913/1200 [04:37<01:27,  3.28it/s]
 76%|███████▌  | 914/1200 [04:38<01:27,  3.28it/s]
 76%|███████▋  | 915/1200 [04:38<01:26,  3.29it/s]
 76%|███████▋  | 916/1200 [04:38<01:26,  3.29it/s]
 76%|███████▋  | 917/1200 [04:39<01:26,  3.29it/s]
 76%|███████▋  | 918/1200 [04:39<01:25,  3.29it/s]
 77%|███████▋  | 919/1200 [04:39<01:25,  3.29it/s]
 77%|███████▋  | 920/1200 [04:39<01:25,  3.29it/s]
 77%|███████▋  | 921/1200 [04:40<01:24,  3.29it/s]
 77%|███████▋  | 922/1200 [04:40<01:24,  3.29it/s]
 77%|███████▋  | 923/1200 [04:40<01:24,  3.29it/s]
 77%|███████▋  | 924/1200 [04:40<01:23,  3.29it/s]
 77%|███████▋  | 925/1200 [04:41<01:23,  3.29it/s]
 77%|███████▋  | 926/1200 [04:41<01:23,  3.29it/s]
 77%|███████▋  | 927/1200 [04:41<01:22,  3.29it/s]
 77%|███████▋  | 928/1200 [04:41<01:22,  3.29it/s]
 77%|███████▋  | 929/1200 [04:42<01:22,  3.29it/s]
 78%|███████▊  | 930/1200 [04:42<01:21,  3.29it/s]
 78%|███████▊  | 931/1200 [04:42<01:21,  3.30it/s]
 78%|███████▊  | 932/1200 [04:42<01:21,  3.30it/s]
 78%|███████▊  | 933/1200 [04:43<01:21,  3.30it/s]
 78%|███████▊  | 934/1200 [04:43<01:20,  3.30it/s]
 78%|███████▊  | 935/1200 [04:43<01:20,  3.30it/s]
 78%|███████▊  | 936/1200 [04:43<01:20,  3.30it/s]
 78%|███████▊  | 937/1200 [04:44<01:19,  3.30it/s]
 78%|███████▊  | 938/1200 [04:44<01:19,  3.30it/s]
 78%|███████▊  | 939/1200 [04:44<01:19,  3.30it/s]
 78%|███████▊  | 940/1200 [04:44<01:18,  3.30it/s]
 78%|███████▊  | 941/1200 [04:45<01:18,  3.30it/s]
 78%|███████▊  | 942/1200 [04:45<01:18,  3.30it/s]
 79%|███████▊  | 943/1200 [04:45<01:17,  3.30it/s]
 79%|███████▊  | 944/1200 [04:45<01:17,  3.30it/s]
 79%|███████▉  | 945/1200 [04:46<01:17,  3.30it/s]
 79%|███████▉  | 946/1200 [04:46<01:16,  3.30it/s]
 79%|███████▉  | 947/1200 [04:46<01:16,  3.30it/s]
 79%|███████▉  | 948/1200 [04:46<01:16,  3.30it/s]
 79%|███████▉  | 949/1200 [04:47<01:15,  3.30it/s]
 79%|███████▉  | 950/1200 [04:47<01:15,  3.30it/s]
 79%|███████▉  | 951/1200 [04:47<01:15,  3.31it/s]
 79%|███████▉  | 952/1200 [04:47<01:15,  3.31it/s]
 79%|███████▉  | 953/1200 [04:48<01:14,  3.31it/s]
 80%|███████▉  | 954/1200 [04:48<01:14,  3.31it/s]
 80%|███████▉  | 955/1200 [04:48<01:14,  3.31it/s]
 80%|███████▉  | 956/1200 [04:48<01:13,  3.31it/s]
 80%|███████▉  | 957/1200 [04:49<01:13,  3.31it/s]
 80%|███████▉  | 958/1200 [04:49<01:13,  3.31it/s]
 80%|███████▉  | 959/1200 [04:49<01:12,  3.31it/s]
 80%|████████  | 960/1200 [04:50<01:12,  3.31it/s]
 80%|████████  | 961/1200 [04:50<01:12,  3.31it/s]
 80%|████████  | 962/1200 [04:50<01:11,  3.31it/s]
 80%|████████  | 963/1200 [04:50<01:11,  3.31it/s]
 80%|████████  | 964/1200 [04:51<01:11,  3.31it/s]
 80%|████████  | 965/1200 [04:51<01:10,  3.31it/s]
 80%|████████  | 966/1200 [04:51<01:10,  3.31it/s]
 81%|████████  | 967/1200 [04:51<01:10,  3.31it/s]
 81%|████████  | 968/1200 [04:52<01:10,  3.31it/s]
 81%|████████  | 969/1200 [04:52<01:09,  3.31it/s]
 81%|████████  | 970/1200 [04:52<01:09,  3.31it/s]
 81%|████████  | 971/1200 [04:52<01:09,  3.31it/s]
 81%|████████  | 972/1200 [04:53<01:08,  3.31it/s]
 81%|████████  | 973/1200 [04:53<01:08,  3.31it/s]
 81%|████████  | 974/1200 [04:53<01:08,  3.32it/s]
 81%|████████▏ | 975/1200 [04:54<01:07,  3.32it/s]
 81%|████████▏ | 976/1200 [04:54<01:07,  3.32it/s]
 81%|████████▏ | 977/1200 [04:54<01:07,  3.32it/s]
 82%|████████▏ | 978/1200 [04:54<01:06,  3.32it/s]
 82%|████████▏ | 979/1200 [04:55<01:06,  3.32it/s]
 82%|████████▏ | 980/1200 [04:55<01:06,  3.32it/s]
 82%|████████▏ | 981/1200 [04:55<01:05,  3.32it/s]
 82%|████████▏ | 982/1200 [04:55<01:05,  3.32it/s]
 82%|████████▏ | 983/1200 [04:56<01:05,  3.32it/s]
 82%|████████▏ | 984/1200 [04:56<01:05,  3.32it/s]
 82%|████████▏ | 985/1200 [04:56<01:04,  3.32it/s]
 82%|████████▏ | 986/1200 [04:56<01:04,  3.32it/s]
 82%|████████▏ | 987/1200 [04:57<01:04,  3.32it/s]
 82%|████████▏ | 988/1200 [04:57<01:03,  3.32it/s]
 82%|████████▏ | 989/1200 [04:57<01:03,  3.32it/s]
 82%|████████▎ | 990/1200 [04:58<01:03,  3.32it/s]
 83%|████████▎ | 991/1200 [04:58<01:02,  3.32it/s]
 83%|████████▎ | 992/1200 [04:58<01:02,  3.32it/s]
 83%|████████▎ | 993/1200 [04:58<01:02,  3.32it/s]
 83%|████████▎ | 994/1200 [04:59<01:01,  3.32it/s]
 83%|████████▎ | 995/1200 [04:59<01:01,  3.32it/s]
 83%|████████▎ | 996/1200 [04:59<01:01,  3.32it/s]
 83%|████████▎ | 997/1200 [04:59<01:01,  3.33it/s]
 83%|████████▎ | 998/1200 [05:00<01:00,  3.33it/s]
 83%|████████▎ | 999/1200 [05:00<01:00,  3.33it/s]
 83%|████████▎ | 1000/1200 [05:00<01:00,  3.33it/s]
 83%|████████▎ | 1001/1200 [05:00<00:59,  3.33it/s]
 84%|████████▎ | 1002/1200 [05:01<00:59,  3.33it/s]
 84%|████████▎ | 1003/1200 [05:01<00:59,  3.33it/s]
 84%|████████▎ | 1004/1200 [05:01<00:58,  3.33it/s]
 84%|████████▍ | 1005/1200 [05:01<00:58,  3.33it/s]
 84%|████████▍ | 1006/1200 [05:02<00:58,  3.33it/s]
 84%|████████▍ | 1007/1200 [05:02<00:57,  3.33it/s]
 84%|████████▍ | 1008/1200 [05:02<00:57,  3.33it/s]
 84%|████████▍ | 1009/1200 [05:02<00:57,  3.33it/s]
 84%|████████▍ | 1010/1200 [05:03<00:57,  3.33it/s]
 84%|████████▍ | 1011/1200 [05:03<00:56,  3.33it/s]
 84%|████████▍ | 1012/1200 [05:03<00:56,  3.33it/s]
 84%|████████▍ | 1013/1200 [05:03<00:56,  3.33it/s]
 84%|████████▍ | 1014/1200 [05:04<00:55,  3.33it/s]
 85%|████████▍ | 1015/1200 [05:04<00:55,  3.33it/s]
 85%|████████▍ | 1016/1200 [05:04<00:55,  3.33it/s]
 85%|████████▍ | 1017/1200 [05:05<00:54,  3.33it/s]
 85%|████████▍ | 1018/1200 [05:05<00:54,  3.33it/s]
 85%|████████▍ | 1019/1200 [05:05<00:54,  3.33it/s]
 85%|████████▌ | 1020/1200 [05:05<00:53,  3.33it/s]
 85%|████████▌ | 1021/1200 [05:06<00:53,  3.33it/s]
 85%|████████▌ | 1022/1200 [05:06<00:53,  3.34it/s]
 85%|████████▌ | 1023/1200 [05:06<00:53,  3.34it/s]
 85%|████████▌ | 1024/1200 [05:06<00:52,  3.34it/s]
 85%|████████▌ | 1025/1200 [05:07<00:52,  3.34it/s]
 86%|████████▌ | 1026/1200 [05:07<00:52,  3.34it/s]
 86%|████████▌ | 1027/1200 [05:07<00:51,  3.34it/s]
 86%|████████▌ | 1028/1200 [05:08<00:51,  3.34it/s]
 86%|████████▌ | 1029/1200 [05:08<00:51,  3.34it/s]
 86%|████████▌ | 1030/1200 [05:08<00:50,  3.34it/s]
 86%|████████▌ | 1031/1200 [05:09<00:50,  3.34it/s]
 86%|████████▌ | 1032/1200 [05:09<00:50,  3.34it/s]
 86%|████████▌ | 1033/1200 [05:09<00:50,  3.34it/s]
 86%|████████▌ | 1034/1200 [05:09<00:49,  3.34it/s]
 86%|████████▋ | 1035/1200 [05:10<00:49,  3.34it/s]
 86%|████████▋ | 1036/1200 [05:10<00:49,  3.34it/s]
 86%|████████▋ | 1037/1200 [05:10<00:48,  3.34it/s]
 86%|████████▋ | 1038/1200 [05:11<00:48,  3.34it/s]
 87%|████████▋ | 1039/1200 [05:11<00:48,  3.34it/s]
 87%|████████▋ | 1040/1200 [05:11<00:47,  3.34it/s]
 87%|████████▋ | 1041/1200 [05:11<00:47,  3.34it/s]
 87%|████████▋ | 1042/1200 [05:12<00:47,  3.34it/s]
 87%|████████▋ | 1043/1200 [05:12<00:47,  3.34it/s]
 87%|████████▋ | 1044/1200 [05:12<00:46,  3.34it/s]
 87%|████████▋ | 1045/1200 [05:13<00:46,  3.34it/s]
 87%|████████▋ | 1046/1200 [05:13<00:46,  3.34it/s]
 87%|████████▋ | 1047/1200 [05:13<00:45,  3.34it/s]
 87%|████████▋ | 1048/1200 [05:14<00:45,  3.34it/s]
 87%|████████▋ | 1049/1200 [05:14<00:45,  3.34it/s]
 88%|████████▊ | 1050/1200 [05:14<00:44,  3.34it/s]
 88%|████████▊ | 1051/1200 [05:14<00:44,  3.34it/s]
 88%|████████▊ | 1052/1200 [05:15<00:44,  3.34it/s]
 88%|████████▊ | 1053/1200 [05:15<00:44,  3.34it/s]
 88%|████████▊ | 1054/1200 [05:15<00:43,  3.34it/s]
 88%|████████▊ | 1055/1200 [05:16<00:43,  3.34it/s]
 88%|████████▊ | 1056/1200 [05:16<00:43,  3.34it/s]
 88%|████████▊ | 1057/1200 [05:16<00:42,  3.34it/s]
 88%|████████▊ | 1058/1200 [05:16<00:42,  3.34it/s]
 88%|████████▊ | 1059/1200 [05:17<00:42,  3.34it/s]
 88%|████████▊ | 1060/1200 [05:17<00:41,  3.34it/s]
 88%|████████▊ | 1061/1200 [05:17<00:41,  3.34it/s]
 88%|████████▊ | 1062/1200 [05:18<00:41,  3.34it/s]
 89%|████████▊ | 1063/1200 [05:18<00:41,  3.34it/s]
 89%|████████▊ | 1064/1200 [05:18<00:40,  3.34it/s]
 89%|████████▉ | 1065/1200 [05:18<00:40,  3.34it/s]
 89%|████████▉ | 1066/1200 [05:19<00:40,  3.34it/s]
 89%|████████▉ | 1067/1200 [05:19<00:39,  3.34it/s]
 89%|████████▉ | 1068/1200 [05:19<00:39,  3.34it/s]
 89%|████████▉ | 1069/1200 [05:20<00:39,  3.34it/s]
 89%|████████▉ | 1070/1200 [05:20<00:38,  3.34it/s]
 89%|████████▉ | 1071/1200 [05:20<00:38,  3.34it/s]
 89%|████████▉ | 1072/1200 [05:20<00:38,  3.34it/s]
 89%|████████▉ | 1073/1200 [05:21<00:38,  3.34it/s]
 90%|████████▉ | 1074/1200 [05:21<00:37,  3.34it/s]
 90%|████████▉ | 1075/1200 [05:21<00:37,  3.34it/s]
 90%|████████▉ | 1076/1200 [05:22<00:37,  3.34it/s]
 90%|████████▉ | 1077/1200 [05:22<00:36,  3.34it/s]
 90%|████████▉ | 1078/1200 [05:22<00:36,  3.34it/s]
 90%|████████▉ | 1079/1200 [05:22<00:36,  3.34it/s]
 90%|█████████ | 1080/1200 [05:23<00:35,  3.34it/s]
 90%|█████████ | 1081/1200 [05:23<00:35,  3.34it/s]
 90%|█████████ | 1082/1200 [05:23<00:35,  3.34it/s]
 90%|█████████ | 1083/1200 [05:24<00:35,  3.34it/s]
 90%|█████████ | 1084/1200 [05:24<00:34,  3.34it/s]
 90%|█████████ | 1085/1200 [05:24<00:34,  3.34it/s]
 90%|█████████ | 1086/1200 [05:24<00:34,  3.34it/s]
 91%|█████████ | 1087/1200 [05:25<00:33,  3.34it/s]
 91%|█████████ | 1088/1200 [05:25<00:33,  3.34it/s]
 91%|█████████ | 1089/1200 [05:25<00:33,  3.34it/s]
 91%|█████████ | 1090/1200 [05:26<00:32,  3.34it/s]
 91%|█████████ | 1091/1200 [05:26<00:32,  3.34it/s]
 91%|█████████ | 1092/1200 [05:26<00:32,  3.34it/s]
 91%|█████████ | 1093/1200 [05:27<00:32,  3.34it/s]
 91%|█████████ | 1094/1200 [05:27<00:31,  3.34it/s]
 91%|█████████▏| 1095/1200 [05:27<00:31,  3.34it/s]
 91%|█████████▏| 1096/1200 [05:27<00:31,  3.34it/s]
 91%|█████████▏| 1097/1200 [05:28<00:30,  3.34it/s]
 92%|█████████▏| 1098/1200 [05:28<00:30,  3.34it/s]
 92%|█████████▏| 1099/1200 [05:28<00:30,  3.34it/s]
 92%|█████████▏| 1100/1200 [05:29<00:29,  3.34it/s]
 92%|█████████▏| 1101/1200 [05:29<00:29,  3.34it/s]
 92%|█████████▏| 1102/1200 [05:29<00:29,  3.34it/s]
 92%|█████████▏| 1103/1200 [05:29<00:29,  3.34it/s]
 92%|█████████▏| 1104/1200 [05:30<00:28,  3.34it/s]
 92%|█████████▏| 1105/1200 [05:30<00:28,  3.34it/s]
 92%|█████████▏| 1106/1200 [05:30<00:28,  3.34it/s]
 92%|█████████▏| 1107/1200 [05:31<00:27,  3.34it/s]
 92%|█████████▏| 1108/1200 [05:31<00:27,  3.34it/s]
 92%|█████████▏| 1109/1200 [05:31<00:27,  3.34it/s]
 92%|█████████▎| 1110/1200 [05:31<00:26,  3.34it/s]
 93%|█████████▎| 1111/1200 [05:32<00:26,  3.34it/s]
 93%|█████████▎| 1112/1200 [05:32<00:26,  3.34it/s]
 93%|█████████▎| 1113/1200 [05:32<00:26,  3.35it/s]
 93%|█████████▎| 1114/1200 [05:33<00:25,  3.35it/s]
 93%|█████████▎| 1115/1200 [05:33<00:25,  3.35it/s]
 93%|█████████▎| 1116/1200 [05:33<00:25,  3.35it/s]
 93%|█████████▎| 1117/1200 [05:33<00:24,  3.35it/s]
 93%|█████████▎| 1118/1200 [05:34<00:24,  3.35it/s]
 93%|█████████▎| 1119/1200 [05:34<00:24,  3.35it/s]
 93%|█████████▎| 1120/1200 [05:34<00:23,  3.35it/s]
 93%|█████████▎| 1121/1200 [05:34<00:23,  3.35it/s]
 94%|█████████▎| 1122/1200 [05:35<00:23,  3.35it/s]
 94%|█████████▎| 1123/1200 [05:35<00:23,  3.35it/s]
 94%|█████████▎| 1124/1200 [05:35<00:22,  3.35it/s]
 94%|█████████▍| 1125/1200 [05:36<00:22,  3.35it/s]
 94%|█████████▍| 1126/1200 [05:36<00:22,  3.35it/s]
 94%|█████████▍| 1127/1200 [05:36<00:21,  3.35it/s]
 94%|█████████▍| 1128/1200 [05:36<00:21,  3.35it/s]
 94%|█████████▍| 1129/1200 [05:37<00:21,  3.35it/s]
 94%|█████████▍| 1130/1200 [05:37<00:20,  3.35it/s]
 94%|█████████▍| 1131/1200 [05:37<00:20,  3.35it/s]
 94%|█████████▍| 1132/1200 [05:37<00:20,  3.35it/s]
 94%|█████████▍| 1133/1200 [05:38<00:19,  3.35it/s]
 94%|█████████▍| 1134/1200 [05:38<00:19,  3.35it/s]
 95%|█████████▍| 1135/1200 [05:38<00:19,  3.35it/s]
 95%|█████████▍| 1136/1200 [05:39<00:19,  3.35it/s]
 95%|█████████▍| 1137/1200 [05:39<00:18,  3.35it/s]
 95%|█████████▍| 1138/1200 [05:39<00:18,  3.35it/s]
 95%|█████████▍| 1139/1200 [05:39<00:18,  3.35it/s]
 95%|█████████▌| 1140/1200 [05:40<00:17,  3.35it/s]
 95%|█████████▌| 1141/1200 [05:40<00:17,  3.35it/s]
 95%|█████████▌| 1142/1200 [05:40<00:17,  3.35it/s]
 95%|█████████▌| 1143/1200 [05:40<00:16,  3.35it/s]
 95%|█████████▌| 1144/1200 [05:41<00:16,  3.35it/s]
 95%|█████████▌| 1145/1200 [05:41<00:16,  3.35it/s]
 96%|█████████▌| 1146/1200 [05:41<00:16,  3.35it/s]
 96%|█████████▌| 1147/1200 [05:42<00:15,  3.35it/s]
 96%|█████████▌| 1148/1200 [05:42<00:15,  3.35it/s]
 96%|█████████▌| 1149/1200 [05:42<00:15,  3.35it/s]
 96%|█████████▌| 1150/1200 [05:42<00:14,  3.35it/s]
 96%|█████████▌| 1151/1200 [05:43<00:14,  3.35it/s]
 96%|█████████▌| 1152/1200 [05:43<00:14,  3.35it/s]
 96%|█████████▌| 1153/1200 [05:43<00:14,  3.35it/s]
 96%|█████████▌| 1154/1200 [05:43<00:13,  3.36it/s]
 96%|█████████▋| 1155/1200 [05:44<00:13,  3.36it/s]
 96%|█████████▋| 1156/1200 [05:44<00:13,  3.36it/s]
 96%|█████████▋| 1157/1200 [05:44<00:12,  3.36it/s]
 96%|█████████▋| 1158/1200 [05:45<00:12,  3.36it/s]
 97%|█████████▋| 1159/1200 [05:45<00:12,  3.36it/s]
 97%|█████████▋| 1160/1200 [05:45<00:11,  3.36it/s]
 97%|█████████▋| 1161/1200 [05:45<00:11,  3.36it/s]
 97%|█████████▋| 1162/1200 [05:46<00:11,  3.36it/s]
 97%|█████████▋| 1163/1200 [05:46<00:11,  3.36it/s]
 97%|█████████▋| 1164/1200 [05:46<00:10,  3.36it/s]
 97%|█████████▋| 1165/1200 [05:47<00:10,  3.36it/s]
 97%|█████████▋| 1166/1200 [05:47<00:10,  3.36it/s]
 97%|█████████▋| 1167/1200 [05:47<00:09,  3.36it/s]
 97%|█████████▋| 1168/1200 [05:47<00:09,  3.36it/s]
 97%|█████████▋| 1169/1200 [05:48<00:09,  3.36it/s]
 98%|█████████▊| 1170/1200 [05:48<00:08,  3.36it/s]
 98%|█████████▊| 1171/1200 [05:48<00:08,  3.36it/s]
 98%|█████████▊| 1172/1200 [05:48<00:08,  3.36it/s]
 98%|█████████▊| 1173/1200 [05:49<00:08,  3.36it/s]
 98%|█████████▊| 1174/1200 [05:49<00:07,  3.36it/s]
 98%|█████████▊| 1175/1200 [05:49<00:07,  3.36it/s]
 98%|█████████▊| 1176/1200 [05:50<00:07,  3.36it/s]
 98%|█████████▊| 1177/1200 [05:50<00:06,  3.36it/s]
 98%|█████████▊| 1178/1200 [05:50<00:06,  3.36it/s]
 98%|█████████▊| 1179/1200 [05:50<00:06,  3.36it/s]
 98%|█████████▊| 1180/1200 [05:51<00:05,  3.36it/s]
 98%|█████████▊| 1181/1200 [05:51<00:05,  3.36it/s]
 98%|█████████▊| 1182/1200 [05:51<00:05,  3.36it/s]
 99%|█████████▊| 1183/1200 [05:52<00:05,  3.36it/s]
 99%|█████████▊| 1184/1200 [05:52<00:04,  3.36it/s]
 99%|█████████▉| 1185/1200 [05:52<00:04,  3.36it/s]
 99%|█████████▉| 1186/1200 [05:52<00:04,  3.36it/s]
 99%|█████████▉| 1187/1200 [05:53<00:03,  3.36it/s]
 99%|█████████▉| 1188/1200 [05:53<00:03,  3.36it/s]
 99%|█████████▉| 1189/1200 [05:53<00:03,  3.36it/s]
 99%|█████████▉| 1190/1200 [05:54<00:02,  3.36it/s]
 99%|█████████▉| 1191/1200 [05:54<00:02,  3.36it/s]
 99%|█████████▉| 1192/1200 [05:54<00:02,  3.36it/s]
 99%|█████████▉| 1193/1200 [05:54<00:02,  3.36it/s]
100%|█████████▉| 1194/1200 [05:55<00:01,  3.36it/s]
100%|█████████▉| 1195/1200 [05:55<00:01,  3.36it/s]
100%|█████████▉| 1196/1200 [05:55<00:01,  3.36it/s]
100%|█████████▉| 1197/1200 [05:55<00:00,  3.36it/s]
100%|█████████▉| 1198/1200 [05:56<00:00,  3.36it/s]
100%|█████████▉| 1199/1200 [05:56<00:00,  3.36it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: harder_challenge_video_output.mp4 

CPU times: user 6min 12s, sys: 1min 26s, total: 7min 38s
Wall time: 5min 57s